C言語でOpenSSLを使ったAES暗号について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
だんごさん
記事: 273
登録日時: 13年前

C言語でOpenSSLを使ったAES暗号について

#1

投稿記事 by だんごさん » 11年前

C言語でOpenSSLを使い、文字列をAES暗号するプログラムを作っています。
ネットで調べて試行錯誤でやっていましたが、もう分からないことだらけなのでトピックを立てました。

質問内容をまとめました。

・暗号化、復号化関数を呼ぶたびに、初期化関数[EVP_CIPHER_CTX_init],[EVP_EncryptInit_ex]を呼び、最後に終了関数[EVP_CIPHER_CTX_cleanup]を呼ぶべきか。
・暗号化後にBase64にエンコードし、復号化前に暗号文をBase64にデコードするソースを見かけたが、あれは必要か。
・キー生成は自分で行うのか。またキーは文字なのか数字のみなのか。
・AES暗号に平文の文字数制限はあるか。

あまりにも情報が少なかったり、色々なサンプルソースにあるものないものがあったりして悩みました。
押し付けで申し訳ないですが、よろしくお願いします。

windows7, VC++2010
 Dango San

アバター
h2so5
副管理人
記事: 2212
登録日時: 14年前
住所: 東京
連絡を取る:

Re: C言語でOpenSSLを使ったAES暗号について

#2

投稿記事 by h2so5 » 11年前

だんごさん さんが書きました: ・暗号化、復号化関数を呼ぶたびに、初期化関数[EVP_CIPHER_CTX_init],[EVP_EncryptInit_ex]を呼び、最後に終了関数[EVP_CIPHER_CTX_cleanup]を呼ぶべきか。
そうです。
だんごさん さんが書きました: ・暗号化後にBase64にエンコードし、復号化前に暗号文をBase64にデコードするソースを見かけたが、あれは必要か。
暗号文をテキストデータとしてやりとりしたい場合は、必要になります。
だんごさん さんが書きました: ・キー生成は自分で行うのか。またキーは文字なのか数字のみなのか。
基本的にOpenSSLの関数を使って生成します。キーはバイナリです。
だんごさん さんが書きました: ・AES暗号に平文の文字数制限はあるか。
ありません。
平文の長さは128bitの倍数である必要がありますが、デフォルトではOpenSSLが自動的にパディングをしてくれます。

だんごさん
記事: 273
登録日時: 13年前

Re: C言語でOpenSSLを使ったAES暗号について

#3

投稿記事 by だんごさん » 11年前

ありがとうございます。
だいぶ作業がはかどりそうです。

キー生成はAES_set_encrypt_keyか何かでしょうか?
質問ばかりで申し訳ないですがよろしくお願いします。
 Dango San

アバター
h2so5
副管理人
記事: 2212
登録日時: 14年前
住所: 東京
連絡を取る:

Re: C言語でOpenSSLを使ったAES暗号について

#4

投稿記事 by h2so5 » 11年前

キーの生成はRAND_bytesを使います。

だんごさん
記事: 273
登録日時: 13年前

Re: C言語でOpenSSLを使ったAES暗号について

#5

投稿記事 by だんごさん » 11年前

ありがとうございます。
おかげでAES暗号が完成しました。
 Dango San

閉鎖

“C言語何でも質問掲示板” へ戻る