リライトしたタイトルは「PHP版CryptoJS aes暗号化機能」です。
P粉329425839
P粉329425839 2023-08-31 23:20:42
0
2
578
<p>CryptoJS を使用して、この JS コードと同等の PHP を作成しようとしています。</p> <pre class="brush:php;toolbar:false;">関数 aesEncrypt (データ) { const key = 'GSTEGSTEjdfheyhdHSHSHSHDHHDHmdjjdn12ndndn5r='; const iv = '\0'; const cipher = CryptoJS.AES.encrypt(data, CryptoJS.enc.Base64.parse(key), { iv: CryptoJS.enc.Utf8.parse(iv), // 解析 IV パディング: CryptoJS.pad.Pkcs7、 モード: CryptoJS.mode.CBC }) cipher.toString()を返す }</pre> <p>JS コードの結果: pHjpwiyKq7Rf4dFcBMbm1w==</p> <p>これは、スタックオーバーフローの他の質問を読んで私が書いた PHP コードです。しかし、同じ結果は返されません。 </p> <pre class="brush:php;toolbar:false;">$plaintext = "plainText"; $method = 'aes-256-cbc'; $key =base64_encode("GSTEGSTEjdfheyhdHSHSHSHDHHDHmdjjdn12ndndn5r="); $iv = hex2bin('0000000000000000000000000000000'); $ciphertext = openssl_encrypt( $平文、 $メソッド、 $キー、 OPENSSL_RAW_DATA、 $iv ); $ciphertext = Base64_encode($ciphertext); echo $ciphertext;</pre> <p>PHP コードの結果: YJOMi2vISmEXIjUZls3MA==</p>
P粉329425839
P粉329425839

全員に返信(2)
P粉668019339

###これを試して: ### リーリー

いいねを押す +0
P粉639667504

PHP コードでは、キーは Base64 でエンコードされた ではなく、Base64 デコードされた

である必要があります。 リーリー

この変更により、必要な暗号文が作成されます。

openssl_encrypt() 呼び出しの 4 番目のパラメータに OPENSSL_RAW_DATA の代わりに 0 が渡されると、暗号化が行われないことに注意してください。ファイルはデフォルトで Base64 でエンコードされます。したがって、暗号文を明示的に Base64 エンコードする必要はありません。


静的 IV は安全ではないことに注意してください。通常、暗号化プロセス中に、random IV が生成され、暗号文とともに復号化側に渡されます (通常は結合されます)。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート