C コードは ECB を使用しており、パディングを行っていないようです。そのため、16 バイトのメッセージ (倍数) とそれに続く 16 バイトの値 16 (pkcs#7 パディング) を暗号化してみてください。または、openssl で 16 バイトのメッセージ (倍数) と --nopad を使用します (動作する可能性が高くなります)。また、aes-128-ecb またはそれが呼ばれるものを使用します。
ブロック暗号は、テキストの「チャンク」で機能します。この場合、長さは 16 文字です。したがって、パディングについて心配したくない場合は、正確な数のチャンクを指定する必要があります。
また、ecb モード (追加の処理なしで各チャンクを順番に実行する) は、多くの用途で安全ではありません。ウィキペディアの記事を参照してください (ペンギンの写真を見てください)。
[編集:] [編集2:]
> echo -n "abcdabcdabcdabcd" > msg
> wc msg
0 1 16 msg
> openssl enc -aes-128-ecb -nopad -in msg -K 0 -S "" -iv ""
[noise]
> openssl enc -aes-128-ecb -nopad -in msg -K 0 -S "" -iv "" | wc
0 1 16
上記を自分で試して、他のコードがそれを解読するかどうかを確認してください (編集 2 はキーを明示的に設定し、IV とソルトを削除します - この場合、後者の 2 つは何のためにあるのかわかりません)。
[編集3:]
私が知る限り、問題はパスワードがキーに変換される方法に関連しています。openssl は、キーを 16 進数 ( ) として指定しない限り、取り除けない余分なことをしているよう-K 0
です。私がそうすると、他のプログラムは動作しません (パスワードが必要です)。
申し訳ありませんが、私はアイデアがありません。