Entry

プログラミングメモ - 暗号化アプリがフニャりながらもできたっぽい

2010年07月13日

ippsRijndael256EncryptCTR の使い方がようやく分かって,なんとなくコアの部分はできたっぽい。もう少し動作確認をして周辺の機能を作り込んだら,フリーソフトとしてどこかに公開するつもりです。

結局,ちゃんと動かなかった原因は,関数に渡すバッファ長をブロックサイズの倍数にしていなかったからだったみたいです。関数の説明には何も書かれていなかったので,てっきり実データがあるところまでの長さを渡すんだと思い込んでいました。最後の方で暗号化-復号化がおかしくなるのは,最後に半端なバイト数をわたしていたからだった,と。まぁ,フニャりっぷりも甚だしい,恥ずかしい間違いです。

と,IPP 周辺の作り込みは終わったので,あとはもう少し使い勝手を良くするために,GUI の操作をもう少し考えていきます。とりあえず,プログレスバーで進捗表示するようにはしたい。途中でキャンセルできるようにもしたい。MFC ならマルチスレッドなプログラムも AfxCreateThreadAfxBeginThread でばっちり。これは普通にいつも通り作ればいい。

あと今は,出力ファイル名のあるパスに直接暗号化/復号化したファイルを書き込みにいっているんだけれども,これはお作法としてあまりよくなかったりします。お作法としては,GetTempFileName のような関数を使って書き出し用の一時ファイル名を取得して,これに書き出すことになります。上書きにしても新規作成にしても,全部が成功した後で目的のファイル名にリネームするのがいいやり方。どうしてかというと,特に上書きの場合,ファイル書き込みに途中で失敗すると,書き込もうとしていた新しいファイルはもちろん,元のファイルすら残らなくなるからです。ただのファイル破壊プログラムになってしまう。これは,動的にメモリを確保しなおすときも同じです(一旦 tmp のポインタで新規のバッファを受けておいて,初期化処理やコピー処理がすべて成功した後に旧メモリを解放,新規のアドレスを目的の変数にコピーする)。

とりあえず,ヤマは越えたと思う。やぁ……半日はまってしまった。

Trackback
Trackback URL:
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN