HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0430
AziOGroup変数の独自の暗号化と独自の圧縮の方法12未解決


AziOGroup

リンク

2009/4/30(Thu) 20:40:14|NO.24893

こんにちは。AziOGroupです。
新しいプロジェクトとして、画像を独自のフォーマットにしたり、復元したりするソフトを作っていました。
プログラムの中核が完成して、確認してて思ったのですが、
4000*3000pxほどの画像を独自形式に変換すると
199MB
というとても大きな数字になってしまいました。
元画像が 40MB なのに(BMPです)これは致命的だ。と思ってプログラムを変えようと思ったのですが、
圧縮の方法がわかりません。
また、セキュリティレベルを上げるためにファイルを独自の暗号化方法を作りたいのですがどのようにしたら
実現できるのですか?

わかる方お願いします

現在のプログラムは、1pxずつR,G,Bすべてを取り出して、バイナリとして3次元配列変数で保存しています。



この記事に返信する


check

リンク

2009/4/30(Thu) 21:30:03|NO.24896

暗号化はそこまで複雑なものを作ろうとしなければ簡単だろう。
xor演算だけでも簡単にできる(すぐに見破られるだろうが)
圧縮法はググってみれば先人たちの知恵がいくつも見つかる。
自分で考えるとしたらなかなか難しいと思うが。



test

リンク

2009/4/30(Thu) 21:32:29|NO.24897

配列だと1つの要素で4バイト消費してしまうので
メモリ操作命令で1バイトずつ処理した方がサイズが小さくなると思います



panda

リンク

2009/4/30(Thu) 21:42:27|NO.24899

セキュリティレベルをあげるために…っていう割りに、人に聞いちゃ意味がないような…^^;;
まぁ、使用公開してもセキュリティレベルの高いものもありますが…。

ちょっと、やつけた方法ですが、zlib系のモジュールを使ってみると圧縮はできます。
圧縮も一種の暗号化(といっても、パっと見ですが)なので、圧縮+簡易暗号化でも
だいぶ効果は高いと思います。



ORZ

リンク

2009/4/30(Thu) 22:13:50|NO.24901

RGB値は0〜255なので、それぞれを1byteで表すだけで、1ピクセルにつき12byte使っていたものが
3byteになります。
画像圧縮で単純な方法は、色数を減らす、もしくは目を荒くする方法があるのでググって頂戴。



窓口

リンク

2009/5/1(Fri) 03:53:31|NO.24902

簡単な暗号化です。
こんなのはどうですか?


;「キ―コード」に加減数を示す計算式をカッコ内に記述 ; #define キ―コード (1200*cnt) a="こんにちは" mes a + " 元" repeat strlen(a) poke a,cnt,peek(a,cnt)+キ―コード loop mes a + " 暗号化" repeat strlen(a) poke a,cnt,peek(a,cnt)-キ―コード loop mes a + " 復号化"



窓口

リンク

2009/5/1(Fri) 04:19:46|NO.24903

サイズを減らすにはこの方法で大丈夫だと思います
圧縮とは違うと思いますが

sdim px1,3 poke px1,0, 255 poke px1,1, 12 poke px1,2, 255 color peek(px1,0),peek(px1,1),peek(px1,2) boxf

ところでなんでみんなマスコットが熊なんですか。
ここは流れに逆らって、あえて羊で行きたいと思います。



Gugulecus

リンク

2009/5/1(Fri) 08:35:40|NO.24905

RGB値をそれぞれ2変数関数で近似すればかなりサイズは減るんじゃないかと。
つまり画像の各点の座標を(x,y)として

r(x,y) = R値 g(x,y) = G値 b(x,y) = B値
となる関数を求めてしまえば、関数+縦横サイズで画像は再現でき、
ファイルサイズは大幅に削減できるかと。

ただし、零点をどこにするかによって近似の次数も変わるだろうし、
何次まで近似するかの判断を間違えれば見るに堪えない画像になるかも知れん。



えく

リンク

2009/5/1(Fri) 14:08:27|NO.24906

独自の暗号化を施したからといってセキュリティレベルが上がるとは必ずしも言えないので、
他の強力な暗号化アルゴリズムも一緒に採用した方がいいと思いますよ
大きいサイズの画像も扱うようでしたら対称暗号で
無難に行きたいならAESなどでしょうね、やはり…



KA

リンク

2009/5/1(Fri) 19:48:12|NO.24913

窓口さん
>>ところでなんでみんなマスコットが熊なんですか。
→初期設定が”熊”なのと、替えるのが面倒くさいからだと思います。

AziOGroupさん
>>4000*3000pxほどの画像を独自形式に変換すると
>>199MBというとても大きな数字になってしまいました。
>>元画像が 40MB なのに(BMPです)これは致命的だ。
>>圧縮の方法がわかりません。
>>セキュリティレベルを上げるために独自の暗号化方法を作りたい
>>現在は1pxずつR,G,Bすべてをバイナリとして3次元配列変数で保存

元画像40MB→独自形式199MB、RGBばらして配列で保存?
単純にそのまま保存しても計算では40*4=160MBです、配列の取り方が悪いのか
効率の悪い独自形式と言えるでしょう。

ただし”独自形式”自体が一種の暗号です、この場合配列1要素4Bの内1Bしか
使っていないので残りを適当なランダム値で埋めれば、普通こんなに無駄な形
式とは思わないでしょう。

圧縮については他にも出ていますが、手っ取り早いのは一般の圧縮を施した上
で、その圧縮ファイルを加工することでしょうか。
加工の方法が結局は暗号化と同じことなのですが、圧縮ファイルを画像と考え
て、上下反転等のいわゆる”画像マスク”もどきの事を行う方法もあります。



コンテスト出品者

リンク

2009/5/2(Sat) 11:03:15|NO.24920

とりあえず「画像を見られたくない」という趣旨でしたら
PNGで保存したファイルのヘッダ部分を暗号化、くらいの措置で
十分なような気がします。

独自の圧縮・暗号化形式を開発すること自体が目的なら、話は別ですが。



b

リンク

2009/5/2(Sat) 14:07:06|NO.24924

RGBの要素を16進数(ffffff 等)にすると容量を減らせると思います。
それと圧縮は、例えばデータが
ff00ffffffffffff00000000
だったとしたら、連続したデータの数を$と$で囲んで、
ff00f$12$0$8$
とすれば、途中でfが12個、0が8個続くとより少ないデータで表せます。

見当違いでしたらごめんなさい〜;



クレイモアズ

リンク

2009/5/2(Sat) 16:55:25|NO.24926

>>1pxずつR,G,Bすべてを取り出して

昔似たようなプログラムを作ってました。
少しせこいですが、サイズを減らす(というより時間を短縮)ために
gzoomで縮小してフォーマットしたりしてました。

暗号化はパスワードをhspdaのvsaveでまとめてパックしてました。(暗号化なのかな?)



ONION software Copyright 1997-2023(c) All rights reserved.