Tajuk yang ditulis semula ialah: Versi PHP fungsi penyulitan aes CryptoJS
P粉329425839
P粉329425839 2023-08-31 23:20:42
0
2
557
<p>Saya cuba mencipta PHP yang setara dengan kod JS ini menggunakan CryptoJS: </p> <pre class="brush:php;toolbar:false;">fungsi aesEncrypt (data) { kekunci const = 'GSTEGSTEjdfheyhdHSSHSHSHHHDHmdjjdn12ndndn5r='; const iv = ' const cipher = CryptoJS.AES.encrypt(data, CryptoJS.enc.Base64.parse(key), { iv: CryptoJS.enc.Utf8.parse(iv), // Parse IV padding: CryptoJS.pad.Pkcs7, mod: CryptoJS.mode.CBC }) kembalikan cipher.toString() }</pre> <p>Hasil kod js: pHjpwiyKq7Rf4dFcBMbm1w==</p> <p>Ini ialah kod PHP yang saya tulis dengan membaca soalan stackoverflow lain. Tetapi ia tidak mengembalikan hasil yang sama. </p> <pre class="brush:php;toolbar:false;">$plaintext = "plainTeks"; $method = 'aes-256-cbc'; $key = base64_encode("GSTEGSTEjdfheyhdHSHSHSHHHHHDHmdjjdn12ndndn5r="); $iv = hex2bin('0000000000000000000000000000000'); $ciphertext = openssl_encrypt( $plaintext, $kaedah, $kunci, OPENSSL_RAW_DATA, $iv ); $ciphertext = base64_encode($ciphertext); echo $ciphertext;</pre> <p>Hasil kod PHP: +YJOMi2vISmEXIjUZls3MA==</p>
P粉329425839
P粉329425839

membalas semua(2)
P粉668019339

Cuba ini:

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

Dalam kod PHP, kunci mestilah Base64 disulitkan, bukan Base64 dikodkan:

$key = base64_decode("GSTEGSTEjdfheyhdHSHSHSHDHHDHmdjjdn12ndndn5r=");

Dengan perubahan ini, teks sifir yang diperlukan dicipta.

Sila ambil perhatian bahawa jika dalam openssl_encrypt()调用的第四个参数中传递0而不是OPENSSL_RAW_DATA, teks sifir akan dikodkan Base64 secara lalai. Oleh itu, pengekodan Base64 secara eksplisit teks sifir adalah tidak diperlukan.


Sila ingat bahawa IV statik tidak selamat. Biasanya semasa proses penyulitan, rawakIV dijana dan dihantar bersama teks sifir kepada pihak penyahsulitan (biasanya disambung bersama).

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan