第8天 写一个加密字符串的方法
Activity
linghucq1 commentedon May 8, 2019
myprelude commentedon Jun 13, 2019
MartinsYong commentedon Jun 24, 2019
仅支持浏览器端:
源自阮一峰《JavaScript 标准教程》
Konata9 commentedon Jul 5, 2019
kokokele commentedon Jul 9, 2019
题目应该加密和解密同时实现吧
haizhilin2013 commentedon Jul 9, 2019
@kokokele 你可以同时实现出来
JJL-SH commentedon Sep 5, 2019
pigPEQ commentedon Nov 8, 2019
crazyming9528 commentedon Dec 20, 2019
js生成动态密文
前端生成的密文虽然谈不上安全,但是可以用于混淆文本,防止一些参数被猜到.
特点:
每次生成的密文都不一样,解密后的文本一样
原理:
加密:
将字符串中的字符拆分成数组并将其转为字符的八进制Unicode码->反序->分割字符串->在字符串中随机加入小写字母,将分割符替换为随机大写字母
这样最终生成了 由数字/小写字母/大写字母的 动态密文
解密:
去掉小写字母->将大写字母替换为一个分割符并用分割符 拆分字符串为数组->反序->将八进制Unicode码转字符串->将数组合并成字符串
使用场景:
隐藏一些不想让用户直接看见的参数, 比如 url中的 id 等参数,cookies中的信息等
生活使用:
也可将自己常用的密码加密后保存在电脑上,避免密码被直接暴露.
//加密
function encodeStr(str) {
if (!str) return;
var random = function (lower, upper) {
return Math.floor(Math.random() * (upper - lower + 1)) + lower;
};
var arr = str.toString().split("").map(function (item) {
return item.charCodeAt(0).toString(8)
});
arr.reverse();//反序数组
arr = arr.join("").split("");//暂时使用 _ 分割字符串;
var num = 0;
while (num < str.length) {
var r = String.fromCharCode(random(97, 122));//生成用于混淆的 的 小写字母
arr.splice(random(0, arr.length), 0, r);
num++;
}
return arr.join("").replace(//ig, function (str) {
return String.fromCharCode(random(65, 90));
});//将分割符 _ 替换为随机的 大写字母
}
//解密
function decodeStr(str) {
if (!str) return;
var temp = [];
str.split("").forEach(function (item) {
var code = item.charCodeAt(0);
if (code <= 90 && code >= 65) {
item = "";//将作为分割用的 随机大写字母 统一为 _ 以便切割
temp.push(item);
}else if (code <= 57 && code >= 48) {
temp.push(item);//提取 数字
}
});
temp = temp.join("").split("");
temp.reverse();
var res = temp.map(function (item) {
return String.fromCharCode(parseInt(item, 8));
});
return res.join("");
}
https://www.crazyming.com/note/1704/
YeChang commentedon Dec 22, 2019
susanforme commentedon Feb 4, 2020
giggleCYT commentedon Jun 1, 2020
timeyo commentedon Jun 1, 2020
这么搞你怎么解密
11 remaining items