Heim  >  Fragen und Antworten  >  Hauptteil

Der umgeschriebene Titel lautet: PHP-Version der AES-Verschlüsselungsfunktion von CryptoJS

<p>Ich versuche, mit CryptoJS ein PHP-Äquivalent dieses JS-Codes zu erstellen: </p> <pre class="brush:php;toolbar:false;">function aesEncrypt (data) { const key = 'GSTEGSTEjdfheyhdHSHSHSHDHHDHmdjjdn12ndndn5r='; const iv = ' const cipher = CryptoJS.AES.encrypt(data, CryptoJS.enc.Base64.parse(key), { iv: CryptoJS.enc.Utf8.parse(iv), // Parse IV Polsterung: CryptoJS.pad.Pkcs7, Modus: CryptoJS.mode.CBC }) cipher.toString() zurückgeben }</pre> <p>Das Ergebnis des JS-Codes: pHjpwiyKq7Rf4dFcBMbm1w==</p> <p>Dies ist PHP-Code, den ich durch das Lesen anderer Stackoverflow-Fragen geschrieben habe. Es wird jedoch nicht das gleiche Ergebnis zurückgegeben. </p> <pre class="brush:php;toolbar:false;">$plaintext = "plainText"; $method = 'aes-256-cbc'; $key = base64_encode("GSTEGSTEjdfheyhdHSHSHSHDHHDHmdjjdn12ndndn5r="); $iv = hex2bin('0000000000000000000000000000000'); $ciphertext = openssl_encrypt( $plaintext, $Methode, $key, OPENSSL_RAW_DATA, $iv ); $ciphertext = base64_encode($ciphertext); echo $ciphertext;</pre> <p>Ergebnis des PHP-Codes: +YJOMi2vISmEXIjUZls3MA==</p>
P粉329425839P粉329425839437 Tage vor541

Antworte allen(2)Ich werde antworten

  • P粉668019339

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

    尝试这个:

    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;

    Antwort
    0
  • P粉639667504

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

    在PHP代码中,密钥必须进行Base64 码,而不是Base64编码:

    $key = base64_decode("GSTEGSTEjdfheyhdHSHSHSHDHHDHmdjjdn12ndndn5r=");
    

    通过这个改变,所需的密文被创建出来。

    请注意,如果在openssl_encrypt()调用的第四个参数中传递0而不是OPENSSL_RAW_DATA,则密文默认会进行Base64编码。因此,明确对密文进行Base64编码是不必要的。


    请记住,静态IV是不安全的。通常在加密过程中,会生成一个随机的IV,并将其与密文一起传递给解密方(通常是拼接在一起)。

    Antwort
    0
  • StornierenAntwort