C言語でOpenSSLを使い、文字列をAES暗号するプログラムを作っています。
ネットで調べて試行錯誤でやっていましたが、もう分からないことだらけなのでトピックを立てました。
質問内容をまとめました。
・暗号化、復号化関数を呼ぶたびに、初期化関数[EVP_CIPHER_CTX_init],[EVP_EncryptInit_ex]を呼び、最後に終了関数[EVP_CIPHER_CTX_cleanup]を呼ぶべきか。
・暗号化後にBase64にエンコードし、復号化前に暗号文をBase64にデコードするソースを見かけたが、あれは必要か。
・キー生成は自分で行うのか。またキーは文字なのか数字のみなのか。
・AES暗号に平文の文字数制限はあるか。
あまりにも情報が少なかったり、色々なサンプルソースにあるものないものがあったりして悩みました。
押し付けで申し訳ないですが、よろしくお願いします。
windows7, VC++2010
C言語でOpenSSLを使ったAES暗号について
Re: C言語でOpenSSLを使ったAES暗号について
そうです。だんごさん さんが書きました: ・暗号化、復号化関数を呼ぶたびに、初期化関数[EVP_CIPHER_CTX_init],[EVP_EncryptInit_ex]を呼び、最後に終了関数[EVP_CIPHER_CTX_cleanup]を呼ぶべきか。
暗号文をテキストデータとしてやりとりしたい場合は、必要になります。だんごさん さんが書きました: ・暗号化後にBase64にエンコードし、復号化前に暗号文をBase64にデコードするソースを見かけたが、あれは必要か。
基本的にOpenSSLの関数を使って生成します。キーはバイナリです。だんごさん さんが書きました: ・キー生成は自分で行うのか。またキーは文字なのか数字のみなのか。
ありません。だんごさん さんが書きました: ・AES暗号に平文の文字数制限はあるか。
平文の長さは128bitの倍数である必要がありますが、デフォルトではOpenSSLが自動的にパディングをしてくれます。
Re: C言語でOpenSSLを使ったAES暗号について
ありがとうございます。
だいぶ作業がはかどりそうです。
キー生成はAES_set_encrypt_keyか何かでしょうか?
質問ばかりで申し訳ないですがよろしくお願いします。
だいぶ作業がはかどりそうです。
キー生成はAES_set_encrypt_keyか何かでしょうか?
質問ばかりで申し訳ないですがよろしくお願いします。
Dango San
Re: C言語でOpenSSLを使ったAES暗号について
キーの生成はRAND_bytesを使います。