国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

重寫後的標(biāo)題為:PHP版本的CryptoJS aes加密函數(shù)
P粉329425839
P粉329425839 2023-08-31 23:20:42
0
2
677
<p>我正在嘗試用CryptoJS創(chuàng)建一個(gè)與此JS代碼等效的PHP代碼:</p> <pre class="brush:php;toolbar:false;">function aesEncrypt (data) { const key = 'GSTEGSTEjdfheyhdHSHSHSHDHHDHmdjjdn12ndndn5r='; const iv = '\0'; const cipher = CryptoJS.AES.encrypt(data, CryptoJS.enc.Base64.parse(key), { iv: CryptoJS.enc.Utf8.parse(iv), // 解析IV padding: CryptoJS.pad.Pkcs7, mode: CryptoJS.mode.CBC }) return cipher.toString() }</pre> <p>js程式碼的結(jié)果:pHjpwiyKq7Rf4dFcBMbm1w==</p> <p>這是我透過(guò)閱讀其他stackoverflow問(wèn)題所寫的PHP程式碼。但是它沒(méi)有傳回相同的結(jié)果。 </p> <pre class="brush:php;toolbar:false;">$plaintext = "plainText"; $method = 'aes-256-cbc'; $key = base64_encode("GSTEGSTEjdfheyhdHSHSHSHHDHmdjjdn12ndndn5r="); $iv = hex2bin('00000000000000000000000000000000'); $ciphertext = openssl_encrypt( $plaintext, $method, $key, OPENSSL_RAW_DATA, $iv ); $ciphertext = base64_encode($ciphertext); echo $ciphertext;</pre> <p>PHP程式碼的結(jié)果: YJOMi2vISmEXIjUZls3MA==</p>
P粉329425839
P粉329425839

全部回覆(2)
P粉668019339

嘗試這個(gè):

function encryptData($data, $key, $iv) {
  $cipher = "aes-256-cbc";
  $options = OPENSSL_RAW_DATA;

  $encrypted = openssl_encrypt($data, $cipher, $key, $options, $iv);
  $encrypted = base64_encode($encrypted);

  return $encrypted;
}

$message = "消息";
$key = "我的秘密密鑰";
$iv = "我的iv";

$encrypted = encryptData($message, $key, $iv);

echo $encrypted;
P粉639667504

在PHP程式碼中,金鑰必須進(jìn)行Base64 碼,而不是Base64編碼:

$key = base64_decode("GSTEGSTEjdfheyhdHSHSHSHDHHDHmdjjdn12ndndn5r=");

透過(guò)這個(gè)改變,所需的密文被創(chuàng)建出來(lái)。

請(qǐng)注意,如果在openssl_encrypt()呼叫的第四個(gè)參數(shù)傳遞0而不是OPENSSL_RAW_DATA,則密文字預(yù)設(shè)會(huì)進(jìn)行Base64編碼。因此,明確對(duì)密文進(jìn)行Base64編碼是不必要的。


請(qǐng)記住,靜態(tài)IV是不安全的。通常在加密過(guò)程中,會(huì)產(chǎn)生一個(gè)隨機(jī)的IV,並將其與密文一起傳遞給解密方(通常是拼接在一起)。

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板