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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
1231
kirara暗号化のDESについて4未解決


kirara

リンク

2010/12/31(Fri) 11:50:02|NO.36447

大晦日に失礼します;

現在、暗号化技法の1つであるDESについてやっています。
一応のプログラムは出来たのですが、復号を行っても画像が表示されません。


なお、1,024バイト分の暗号化と復号を行っているつもりです。


//----------------------------変数群----------------------------------// read_file = "○○.jpg" ;読込み対象ファイル enc_KEY = 13 ;キー値 HOZON = 0 ;汎用変数① g_p = 0 ;汎用変数② //--------------------------------------------------------------------// notesel mem_OP noteload read_file //ファイルのロード memfile mem_OP noteunsel g_p = 0 repeat 128 //暗号化 a(1) = lpeek(mem_OP,g_p) ;【第1ブロック(32bit)】読出し a(2) = lpeek(mem_OP,g_p+4) ;【第2ブロック(32bit)】読出し repeat 16 a(1) = a(1) + enc_KEY ;【第1ブロック】にキー値を加算 a(2) = a(2) XOR a(1) ;【第2ブロック】XOR【第1ブロック】→【第2ブロック】 HOZON = a(1) a(1) = a(2) a(2) = HOZON loop lpoke mem_OP, g_p, a(1) lpoke mem_OP, g_p+4, a(2) g_p = g_p + 8 loop g_p = 0 repeat 128 //復号 a(1) = lpeek(mem_OP,g_p) ;【第1ブロック(32bit)】読出し a(2) = lpeek(mem_OP,g_p+4) ;【第2ブロック(32bit)】読出し repeat 16 a(1) = a(1) + enc_KEY ;【第1ブロック】にキー値を加算 a(2) = a(2) XOR a(1) ;【第2ブロック】XOR【第1ブロック】→【第2ブロック】 HOZON = a(1) a(1) = a(2) a(2) = HOZON loop lpoke mem_OP, g_p, a(1) lpoke mem_OP, g_p+4, a(2) g_p = g_p + 8 loop picload "MEM:mem_OP.jpg" //--------------------------------------------------------------------//


あるHPで、
「暗号化と同じ手順をたどれば元の平文に戻すことができる」と書いてあったのですが、
それで正しいですか?

プログラム中に問題があるようでしたら、もしよろしければ教えて下さい。



この記事に返信する


いかろ

リンク

2010/12/31(Fri) 15:09:49|NO.36449

暗号化のほうは見てませんけど、とりあえずnoteloadじゃバイナリファイル読めない、
つまりjpg読めないことが原因では?bload使えば、解決すると思います。
修正前:

notesel mem_OP noteload read_file //ファイルのロード
修正後:

exist read_file sdim mem_OP,strsize bload read_file,mem_OP,strsize,0 //ファイルのロード
違ってたら、ごめんさい。



通りすがり

リンク

2011/1/1(Sat) 00:20:34|NO.36459

>あるHPで、
>「暗号化と同じ手順をたどれば元の平文に戻すことができる」と書いてあったのですが、

手順をたどるというのは、右左右 でかかる鍵がある場合
左右左 で開く事が出来るという意味です。

それとリピート内で暗号処理した後そのまま配列の要素を入れ替えていますが、
この場合、奇数回繰り返したか偶数回繰り返したかで復元時の処理順も変わります。

これらの修正を施し実行した結果、こちらでは画像が表示出来ました。
あとあえてしているのかもしれませんが、HSPの配列の要素は0から指定できます。

>とりあえずnoteloadじゃバイナリファイル読めない

試してみましたが noteload でも問題なくデータに0を含むバイナリファイルを読み込めました。
その際バッファーサイズも自動で確保されるようです。
notesave でのバイナリファイル保存はできませんでした。



通りすがり

リンク

2011/1/1(Sat) 05:51:08|NO.36463

>この場合、奇数回繰り返したか偶数回繰り返したかで復元時の処理順も変わります。

すみません 書いた時はそう思ったのですが
改めて見直したらそんな事は有りませんでした。
このスクリプトで奇数偶数によって結果が変わる事はありません。
訂正してお詫びします。



みけCAT

リンク

2011/1/2(Sun) 09:32:28|NO.36500

すみません、そもそもDESってこんなアルゴリズムでしたっけ?
DESの規格(pdf)があります。
http://free.pjc.co.jp/3DES/index.html
自作のDESのライブラリです。DLLとHSP用のサンプルもあります。
http://dixq.net/forum/blog.php?u=536&b=1053



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