개발할 코드의 사전 테스트로 CryptoJS를 사용하여 데이터를 인코딩/디코딩하려고합니다. 다음은 암호화에 사용하는 코드입니다.CryptoJS로 문자열의 암호를 해독 할 수 없습니다.
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>
<script>
var message = "Secret Message";
var key = CryptoJS.enc.Hex.parse('36ebe205bcdfc499a25e6923f4450fa8');
var iv = CryptoJS.enc.Hex.parse('be410fea41df7162a679875ec131cf2c');
// Encription. Works ok
var encrypted = CryptoJS.AES.encrypt(
message,key,
{
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}
);
console.log('encrypted:'+encrypted.ciphertext.toString());
<script>
이것은 암호 해독에 사용하는 첫 번째 테스트입니다. 그것은 encrypted
매개 변수 CryptoJS.AES.encrypt
에 대한 이전 호출의 결과입니다 3f0e590d2617dc7007b89350bd590409
// Decription. Works ok with "encrypted" parameter
var decrypted = CryptoJS.AES.decrypt(
encrypted,key,
{
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}
);
console.log('decrypted:'+decrypted.toString(CryptoJS.enc.Utf8));
하자 통지를 돌려 확인을 작동합니다. 그것은 하나의 대상입니다.
// Decription. It fails with manual data
var manual_data = CryptoJS.enc.Hex.parse('3f0e590d2617dc7007b89350bd590409');
var decrypted = CryptoJS.AES.decrypt(
manual_data,key,
{
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}
);
console.log('decrypted, by hand:'+decrypted.toString(CryptoJS.enc.Utf8));
그것은이 "빈"개체 (위의 예에서 빈 문자열)을 반환 : 내가 직접 문자열을 해독 할 때
내가 가진 문제입니다. CryptoJS.AES.decrypt가 첫 번째 예제의 암호화 된 개체에 저장되지만 두 번째 예제의 wordarray에서 누락 된 일부 데이터가있는 것처럼 보입니다.
왜 이런 일이 일어나는 지 아십니까?
덕분에, DutGRIFF, 이것은 까다로운 문제였습니다. :) –
JSBin은 빠르게 작동했습니다 ... 그 일을했습니다. –