Le titre réécrit est : Version PHP de la fonction de chiffrement CryptoJS aes
P粉329425839
P粉329425839 2023-08-31 23:20:42
0
2
539
<p>J'essaie de créer un équivalent PHP de ce code JS en utilisant CryptoJS : </p> <pre class="brush:php;toolbar:false;">fonction aesEncrypt (données) { clé const = 'GSTEGSTEjdfheyhdHSHSHSHDHHDHmdjjdn12ndndn5r='; const iv = ' chiffrement const = CryptoJS.AES.encrypt(données, CryptoJS.enc.Base64.parse(clé), { iv : CryptoJS.enc.Utf8.parse(iv), // Analyse IV remplissage : CryptoJS.pad.Pkcs7, mode : CryptoJS.mode.CBC }) retourner cipher.toString() }</pré> <p>Le résultat du code js : pHjpwiyKq7Rf4dFcBMbm1w==</p> <p>C'est du code PHP que j'ai écrit en lisant d'autres questions de stackoverflow. Mais cela ne renvoie pas le même résultat. </p> <pre class="brush:php;toolbar:false;">$plaintext = "plainText"; $method = 'aes-256-cbc'; $key = base64_encode("GSTEGSTEjdfheyhdHSHSHSHDHHDHmdjjdn12ndndn5r="); $iv = hex2bin('000000000000000000000000000000000'); $ciphertext = openssl_encrypt( $texte en clair, $méthode, $clé, OPENSSL_RAW_DATA, $iv ); $ciphertext = base64_encode($ciphertext); echo $texte chiffré;</pre> <p>Résultat du code PHP : +YJOMi2vISmEXIjUZls3MA==</p>
P粉329425839
P粉329425839

répondre à tous(2)
P粉668019339

Essayez ceci :

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

Dans le code PHP, les clés doivent être décryptées en Base64, et non encodées en Base64 :

$key = base64_decode("GSTEGSTEjdfheyhdHSHSHSHDHHDHmdjjdn12ndndn5r=");

Avec ce changement, le texte chiffré requis est créé.

Veuillez noter que si vous êtes en openssl_encrypt()调用的第四个参数中传递0而不是OPENSSL_RAW_DATA, le texte chiffré sera codé en Base64 par défaut. Par conséquent, le codage explicite en Base64 du texte chiffré n’est pas nécessaire.


N’oubliez pas que les IV statiques ne sont pas sûres. Généralement, pendant le processus de cryptage, un randomIV est généré et transmis avec le texte chiffré à la partie de décryptage (généralement assemblés).

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!