- ある値(以下、N値)を「UTF-8」でバイト変換し、バイト型で保管する。
- メッセージダイジェストインスタンスをダイジェスト方式で「SHA-256」を指定し取得。
取得したインスタンスでnonceのバイトコードを変換し、頭から16ケタ(128bit)のみを取り出す。
- 128bitのキーと暗号化方式「AES」を指定してSecretKeySpecオブジェクトをインスタンス化。
AESで指定したN値から生成された値を出力せよ
上記の問題はJavaを想定していますが、これをPHPで実装したいと思っています。
以下のような記述はしているのですが、想定通りの動きとは思えません。
php
1$data = '暗号化文字列'; 2$n = 'ある値'; 3$nonceBinary = bin2hex($n); 4$hash = hash('sha256', $nonceBinary); 5$key = mb_strcut($hash, 0, 16, 'UTF-8'); 6 7return openssl_encrypt( 8 $data, 9 'AES-256-ECB', 10 $key 11);
PHPやJavaに詳しい方教えていただけないでしょうか。
回答2件
あなたの回答
tips
プレビュー