为什么没有Googles AES加密的Javascript代码在此代码中工作?

时间:2014-04-25 21:31:44

标签: javascript encryption aes cryptojs

<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>
<script>
var toEncMes = "This is a secret message.";
var secPas = "myPassword";
var encrypted = CryptoJS.AES.encrypt(toEncMes, secPas);

alert (encrypted);
var decrypted = CryptoJS.AES.decrypt(encrypted, secPas);
alert (decrypted);
</script>

我可能只是不理解这个概念,但我不知道。

当我显示解密结果时,我的代码的最终结果仍然只是混乱。

我在这里找到了这个: https://code.google.com/p/crypto-js/

原始条目如下所示:

高级加密标准(AES)是美国联邦信息处理标准(FIPS)。经过5年的过程选择了15个竞争设计。

<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js">    </script>
<script>
    var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase");

    var decrypted = CryptoJS.AES.decrypt(encrypted, "Secret Passphrase");
</script>

CryptoJS支持AES-128,AES-192和AES-256。它将根据您传入的密钥的大小来选择变体。如果您使用密码,则它将生成256位密钥。

1 个答案:

答案 0 :(得分:2)

您正在警告原始解密对象 - 默认编码为十六进制。需要使用适当的人类可读编码将其转换为字符串:

<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>
<script>
var toEncMes = "This is a secret message.";
var secPas = "myPassword";
var encrypted = CryptoJS.AES.encrypt(toEncMes, secPas);

alert (encrypted);
var decrypted = CryptoJS.AES.decrypt(encrypted, secPas);
alert (decrypted.toString(CryptoJS.enc.Utf8)); // <---- note specified encoding
</script>

当然,通常的加密警告标志仍然适用:这并不能确保您的信息没有被篡改等。