常见的加密方式是BASE64加密。本篇介绍一个不常用的前端js加密方式—BASE58加密
下面是代码展示
var BASE=58;
var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
function ToUTF8(str) {
var result = new Array();
var k = 0;
for (var i = 0; i < str.length; i++) {
var j = encodeURI(str[i]);
if (j.length==1) {
// 未转换的字符
result[k++] = j.charCodeAt(0);
} else {
// 转换成%XX形式的字符
var bytes = j.split("%");
for (var l = 1; l < bytes.length; l++) {
result[k++] = parseInt("0x" + bytes[l]);
}
}
}
return result;
}
function demo(str) {
if (str.length == 0) {
console.log('字符串为空')
} else {
var i, j, str1 = [0]
for (i = 0; i < str.length; i++) {
for (j = 0; j < str1.length; j++) {
str1[j] <<= 8;//数据转换二进制数,位运算的右边加8个0,生成的二进制数
}
str1[0] += str[i];
var carr = 0;
for (j = 0; j < str1.length; ++j) {
str1[j] += carr;
carr = (str1[j] / BASE) | 0;
str1[j] %= BASE;
}
while (carr) {
str1.push(carr % BASE);
carr = (carr / BASE) | 0;
}
}
}
for (i = 0; str[i] === 0 && i < str.length - 1; i++) str1.push(0);
return str1
.reverse()
.map(function (str1) {
return ALPHABET[str1];
})
.join('');
}
console.log(demo(ToUTF8('测试111')))
加密原理首先进行字符串的类型转换,然后在调用第二个函数进行加密算法
测试结果
去在线解密平台进行解密验证
结果验证成功说明加密算法没有问题
本篇只提供了加密的算法,解密算法请见下一篇文章