AES-256 CBC가 PHP 또는 Ruby에서 문자열을 암호화 할 수 있습니다 (보석 symmetric-encryption 사용).Ruby/PHP에서 AES-256 CBC 암호화가 성공하지만 CryptoJS에서 암호 해독이 실패합니다.
<?php
openssl_encrypt(
'Hello!', 'aes-256-cbc', '1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF', 0, '1234567890ABCDEF1234567890ABCDEF'
); // => 'BAd5fmmMTvRE4Ohvf3GpCw=='
ruby_cipher = SymmetricEncryption::Cipher.new(key: "1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF", iv: "1234567890ABCDEF1234567890ABCDEF", cipher_name: 'aes-256-cbc')
ruby_cipher.encrypt("Hello!") # => "BAd5fmmMTvRE4Ohvf3GpCw=="
는하지만 CryptoJS를 사용하여, 자바 스크립트와 같은 문자열을 해독하는 데 실패합니다. 문서를 해석 할 수있는 한 :
var encrypted = CryptoJS.AES.encrypt ("Message", key, iv : iv));
var decrypted = CryptoJS.AES.decrypt ("Message", key, {iv : iv});
var key = CryptoJS.enc.Hex.parse("1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF"); var iv = CryptoJS.enc.Hex.parse"1234567890ABCDEF1234567890ABCDEF"); var ruby_encrypted = "BAd5fmmMTvRE4Ohvf3GpCw=="; // Output from the Ruby encryption var js_encrypted = CryptoJS.AES.encrypt("Hello!", key, { iv: iv }); // Test to confirm that CryptoJS can decrypt its own encrypted var ruby_decrypted = CryptoJS.AES.decrypt(ruby_encrypted, key, { iv: iv }); // Object { words: Array[4], sigBytes: -129 } var js_decrypted = CryptoJS.AES.decrypt(js_encrypted, key, { iv: iv }); // Object { words: Array[4], sigBytes: 6 } console.log(ruby_decrypted.toString(CryptoJS.enc.Utf8)); // console.log(js_decrypted.toString(CryptoJS.enc.Utf8)); // Hello!
암호 해독이 실패하는 이유 어떤 생각 : 여기 my jsfiddle 또는 나의 시도가 실패한
체크 아웃?
Btw, 나는 OpenSSL이 어떻게 작동하는지에 대한 나의 대답을 조금 분명히했다. –