前端字符串自定义加密解密

该文章介绍了如何使用JavaScript编写自定义的字符串加密和解密函数。加密过程通过Unicode编码值和密钥进行运算,解密则反向操作还原字符串。提供的示例代码展示了如何对账号密码进行加解密,强调了加密解密密钥的一致性要求。
摘要由CSDN通过智能技术生成

1.加密

/**
 * 字符串自定义加密规则
 * str:需要加密的字符串
 * key:加密的密钥(加密解密密钥要相同)
 */
export function encryptionCode(str, key) {  //加密字符串
  let l = key.length;  //获取密钥的长度
  let a = key.split("");  //把密钥字符串转换为字符数组
  let s = "", b, b1, b2, b3;  //定义临时变量
  for (let i = 0; i < str.length; i++) {  //遍历字符串
    b = str.charCodeAt(i);  //逐个提取每个字符,并获取Unicode编码值
    b1 = b % l;  //求Unicode编码值得余数
    b = (b - b1) / l;  //求最大倍数
    b2 = b % l;  //求最大倍数的于是
    b = (b - b2) / l;  //求最大倍数
    b3 = b % l;  //求最大倍数的余数
    s += a[b3] + a[b2] + a[b1];  //根据余数值映射到密钥中对应下标位置的字符
  }
  return s;  //返回这些映射的字符
}

2.解密

/**
 * 字符串自定义解密规则
 * str: 需要解密的字符串
 * key:解密的密钥(加密解密密钥要相同)
 */
export function decryptCode(str, key) {
  let l = key.length;  //获取密钥的长度
  let b, b1, b2, b3, d = 0, s;  //定义临时变量
  s = new Array(Math.floor(str.length / 3));  //计算加密字符串包含的字符数,并定义数组
  b = s.length;  //获取数组的长度
  for (let i = 0; i < b; i++) {  //以数组的长度循环次数,遍历加密字符串
    b1 = key.indexOf(str.charAt(d));  //截取周期内第一个字符串,计算在密钥中的下标值
    d++;
    b2 = key.indexOf(str.charAt(d));  //截取周期内第二个字符串,计算在密钥中的下标值
    d++;
    b3 = key.indexOf(str.charAt(d));  //截取周期内第三个字符串,计算在密钥中的下标值
    d++;
    s[i] = b1 * l * l + b2 * l + b3  //利用下标值,反推被加密字符的Unicode编码值
  }
  b = eval("String.fromCharCode(" + s.join(',') + ")");
  return b;  //返回被解密的字符串
}

 3.引用

  (此加密解密对应文章配合使用或单独使用 http://t.csdn.cn/ZnnZ9

 
 //对账号密码进行加密
 //第一个字段是需要加密的字符串,第二个字段是加密密钥,需要与解密密钥一致
 let phone = encryptionCode(this.queryFormPassword.account, '01234567789abcdefg');
 let pabcd = encryptionCode(this.queryFormPassword.pabcd, '01234567789abcdefg');

 //对账号密码进行解密
 //第一个字段是需要解密的字符串,第二个字段是解密密钥,需要与加密密钥一致
 let phone = decryptCode(this.getCookie('phone'), '01234567789abcdefg');
 let pabcd = decryptCode(this.getCookie('pabcd'), '01234567789abcdefg');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值