>  Q&A  >  본문

다시 작성된 제목은 다음과 같습니다. CryptoJS aes 암호화 기능의 PHP 버전

<p>CryptoJS를 사용하여 이 JS 코드와 동등한 PHP를 만들려고 합니다. </p> <pre class="brush:php;toolbar:false;">함수 aesEncrypt(데이터) { const key = 'GSTEGSTEjdfheyhdHSHSHSHDHHDHmdjjdn12ndndn5r='; const iv = ' const 암호 = 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";; $방법 = 'aes-256-cbc'; $key = base64_encode("GSTEGSTEjdfheyhdHSHSHSHDHHDHmdjjdn12ndndn5r="); $iv = hex2bin('00000000000000000000000000000000'); $ciphertext = openssl_encrypt( $ 일반 텍스트, $방법, $키, OPENSSL_RAW_DATA, $iv ); $ciphertext = base64_encode($ciphertext); echo $ciphertext;</pre> <p>PHP 코드 결과: +YJOMi2vISmEXIjUZls3MA==</p>
P粉329425839P粉329425839437일 전543

모든 응답(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()调用的第四个参数中传递0而不是OPENSSL_RAW_DATA의 경우 암호문은 기본적으로 Base64로 인코딩됩니다. 따라서 암호문을 명시적으로 Base64로 인코딩하는 것은 필요하지 않습니다.


    정적 IV는 안전하지 않다는 점을 기억하세요. 일반적으로 암호화 프로세스 중에 randomIV가 생성되어 암호문과 함께 암호 해독 당사자에게 전달됩니다(일반적으로 함께 연결됨).

    회신하다
    0
  • 취소회신하다