検索

ホームページ  >  に質問  >  本文

リライトしたタイトルは「PHP版CryptoJS aes暗号化機能」です。

<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粉329425839P粉329425839461日前569

全員に返信(2)返信します

  • P粉668019339

    P粉6680193392023-09-01 16:26:36

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

    返事
    0
  • P粉639667504

    P粉6396675042023-09-01 15:35:49

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

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

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

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


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

    返事
    0
  • キャンセル返事