我试图通过javascript创建一个AES-128-CBC解密
到目前为止,我这样做了:
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/components/enc-base64-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.js"></script>
<script>
var rawStr = "MyPassword";
var secret = 'EL12ec@REteLe(0M';
var wordArray = CryptoJS.enc.Utf8.parse(rawStr);
var base64 = CryptoJS.enc.Base64.stringify(wordArray);
var encrypted = '' + CryptoJS.AES.encrypt(base64, secret);
console.log('base64:', base64);
console.log('encrypted:', encrypted);
</script>但是我得到的值是:TXlQYXNzd29yZA==
正确的值是:基于这个在线加密工具的S9bEDxeu/jr+8CdRkiUEog==:https://www.devglan.com/online-tools/aes-encryption-decryption
谁可以帮助我如何实现这一点,以获得相同的结果加密一样,像开发工具?
谢谢,
发布于 2020-02-24 21:24:40
要重现网站的结果,必须考虑以下几点:
WordArray传递给CryptoJS.AES.encrypt。否则,它将被解释为密码,here.WordArray传递给CryptoJS.AES.encrypt (如果网站上未指定IV,则隐式使用0-vector )。CryptoJS.AES.encrypt的返回值是一个CipherParams对象,它封装了密文以及其他内容
var rawStr = "MyPassword";
var secret = CryptoJS.enc.Utf8.parse('EL12ec@REteLe(0M');
var iv = CryptoJS.enc.Utf8.parse('\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0');
var encrypted = CryptoJS.AES.encrypt(rawStr, secret, {iv: iv});
console.log('Output:', CryptoJS.enc.Base64.stringify(encrypted.ciphertext)); // Output: S9bEDxeu/jr+8CdRkiUEog==<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9/crypto-js.min.js"></script>
https://stackoverflow.com/questions/60371358
复制相似问题