JavaScript中的CryptoJS AES加密密钥大小?

时间:2020-07-09 11:44:49

标签: javascript c# encryption aes cryptojs

大家好。 使用javascript中的CryptoJS开发AES加密时遇到麻烦。 我们先来看一下我的源代码。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script src="jquery-3.5.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/core.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/enc-base64.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/md5.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/evpkdf.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/cipher-core.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/aes.min.js"></script>
<!--<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/pad-nopadding.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/lib-typedarrays.min.js"></script>-->
<script type="text/javascript">
    $(document).ready(function() {
        var encrypted = "TEST";
        var key = CryptoJS.enc.Hex.parse("bf161fba8b12433f176bc9088e14bd49499ee34fcb4694082345639957e778852bdc904206c4ecd2d3e2f4bc");
        var iv  = CryptoJS.enc.Hex.parse("18a69482e9d401052c4307dcb8124409");
        var decrypted = CryptoJS.AES.encrypt(encrypted, key, { iv: iv });
        var dec         = CryptoJS.AES.decrypt(decrypted, key, { iv: iv });

        var _cipher     = decrypted.toString();
        var _plain      = dec.toString();
    });
</script>

在这里,您可以看到我的密钥大小是44个字节,即352位。 但是CryptoJS可以完美地以16字节长的IV进行加密和解密。 我完全不知道这是怎么发生的。 据我了解,AES标准使用128、192和256位密钥大小。 https://en.wikipedia.org/wiki/Advanced_Encryption_Standard

我的问题是我必须在C#上编写一些代码以使用相同的密钥和iv加密相同的数据。 但是C#不允许对AES使用44个字节的密钥长度。 我正在使用RijndaelManaged。

有人可以解释CryptoJS中的情况吗?这样我就可以编写自己的C#代码。 预先感谢。

0 个答案:

没有答案