TypeError:无法读取未定义的CryptoJS的属性“ 0”

Shreyas Pednekar

我在我的角度应用程序中使用CryptoJS来实现AES加密,但是TypeError: Cannot read property '0' of undefined当我尝试在IV中发送空的16字节数组时,我一直收到错误消息

错误

这是我的打字稿代码:

aesEncrypt(keys: string, value: string) { // encrypt api request parameter with aes secretkey

    var key = CryptoJS.enc.Utf8.parse(keys);
    //var iv = CryptoJS.enc.Utf8.parse(keys);
    var iv = new Uint16Array(16);
    var encrypted = CryptoJS.AES.encrypt(JSON.stringify(value), key,
        {
            //keySize: 256,
            keySize: 128,
            iv: iv,
            mode: CryptoJS.mode.CBC,
            padding: CryptoJS.pad.Pkcs7,
        });

    return encrypted.toString();
}

但是当我在IV中发送空的16字节数组时,同样的东西在.NET,Android,iOS中也能正常工作

.NET代码:

private static AesCryptoServiceProvider AesCryptoServiceProvider(string key)
{
    AesCryptoServiceProvider aes = new AesCryptoServiceProvider();
    aes.KeySize = 128;
    aes.BlockSize = 128;
    aes.Mode = CipherMode.CBC;
    aes.Padding = PaddingMode.PKCS7;
    aes.Key = Encoding.UTF8.GetBytes(key);
    //aes.IV = Encoding.UTF8.GetBytes(key);
    aes.IV = new byte[16];
    return aes;
}

android代码:

public static String encryptURLEncoding(byte[] key, String encryption) throws GeneralSecurityException 
{
    if (key.length != 16) 
    {
        throw new IllegalArgumentException("Invalid key size.");
    }

    // Setup AES tool.

    SecretKeySpec skeySpec = new SecretKeySpec(key, "AES");
    Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
    cipher.init(Cipher.ENCRYPT_MODE, skeySpec, new IvParameterSpec(new byte[16]));
    byte[] dstBuff = cipher.doFinal(encryption.getBytes());
    String encryptedStringData = android.util.Base64.encodeToString(dstBuff, android.util.Base64.DEFAULT);
    return encryptedStringData;
}

我想通过提供空的16字节数组来实现AES加密解密,因为此应用与我的其他应用(在具有相同加密设置的android,ios平台上)相互连接,但是我的角度应用出现错误,如何解决此问题?

托帕可

在JavaScript代码中,IV必须以形式传递WordArray由于0C#代码中使用-IV,因此还必须在JavaScript代码中完成。对应的WordArray可能是例如

var iv = CryptoJS.enc.Hex.parse("00000000000000000000000000000000");

注意,使用十六进制编码器,以便16个字节0-IV对应于32个值0

还应注意,通常0-IV仅应用于测试目的。实际上,出于安全原因,必须为每个加密生成随机IV。此外,密钥/ IV对只能使用一次。

此外,CryptoJS不知道该参数keySize,而是将其忽略。所使用的AES变体由密钥大小决定,例如,对于32字节密钥,此处使用AES-256

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Javascript Uncaught TypeError:无法读取未定义的属性“ 0”

Rangeslider.js | 未捕获的TypeError:无法读取未定义的属性“ 0”

错误TypeError:无法读取角度高图表中未定义的属性“ 0”

未捕获的TypeError:无法读取未定义的CryptoJS的属性“ 0”

为什么TypeError:无法读取未定义的属性“ 0”?

Ionic InfiniteScroll:TypeError:无法读取未定义的属性“ 0”

无法读取未定义的属性0

JavaScript测验TypeError:无法读取未定义的属性“ 0”

TypeError:无法读取angular2中未定义的属性“ 0”以在datepicker中使用索引

迭代字符串数组:TypeError:无法读取未定义的属性“ 0”

ReactJS-TypeError:无法读取未定义的属性“ 0”

TypeError:无法读取v-for内部未定义的属性“ 0”

Nativescript Vue TypeError:无法读取未定义的属性“ 0”

未捕获的TypeError:无法读取未定义的属性“ 0”,因为它不存在

宠物小精灵API未捕获的TypeError:无法读取未定义的属性'0'

如何修复错误“ ERROR TypeError:无法读取未定义的属性'0'”

已解决/React.js TypeError:无法读取未定义[Tic Tac Toe]的属性“ 0”

无法获取数据。未处理的拒绝(TypeError):无法读取未定义的属性“ 0”

TypeError:使用状态时无法读取未定义的属性“ 0”

未捕获的TypeError:无法读取未定义的属性'0'-highcharts

Google Apps脚本-TypeError:无法从未定义中读取属性“ 0”

如何修复执行失败:TypeError:无法从未定义中读取属性“ 0”?

未捕获的TypeError:无法读取未定义的属性“ 0”

未捕获的TypeError:无法读取未定义的属性“ 0”

For循环:TypeError:无法读取未定义的属性“ 0”

带有TypeError的构造函数中的未定义数组:无法读取未定义的属性“ 0”

Angular TypeError:使用 event.target.file[0] 时无法读取未定义的属性“0”

Vue:挂载钩子中的src错误:“TypeError:无法读取未定义的属性'0'”

React TypeError:无法读取未定义的属性“0”