CryptoJS加密报Error in v-on handler: "RangeError: invalid array length"

原创
01/20 16:27
阅读数 1.4K

下午做修改密码的功能,因为需要使用到加密解密,就调用了之前的封装的工具类,做加密解密,本以为是一个简单的方法,没想到一波三折

点击触发的时候,报 Error in v-on handler: "RangeError: invalid array length" 错误,

这错误看的毫无头绪,比较奇怪的是,我的登录组件也用到了加密,那里是没有问题的,这里的用户修改密码却忽然报错误很奇怪了,通过对比参数,等等都没问题,即使一模一样的数据登录可以,修改不行

我的加密逻辑如下

这代码网上大把,基本都一样,这就很神奇了

最后,终于发现了一个原因,我打印了下变量的类型

console.log(typeof(message))
console.log(typeof(key))

发现登录传的是字符串,而修改的时候,因为密码都是使用 123 这样来测试,被转换为数字类型了,马上修改为字符串,问题解决,这个问题真的太坑了,实在没想到会有这种问题

代码修改后如下,

/**
 * DES加密,ECB模式
 * @param message 要加密的数据
 * @param key 加密的key,后端提供
 */
export function desEncrypt(message, key) {
  // 必须转字符串,否则会报奇怪的错误
  message = message.toString()
  key = key.toString()
  console.log(typeof(message))
  console.log(typeof(key))
  const keyHex = CryptoJS.enc.Utf8.parse(key);
  const option = { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 };
  const encrypted = CryptoJS.DES.encrypt(message, keyHex, option);
  return encrypted.ciphertext.toString();
}

加密正常

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部