JavaScript 实现BASE58加密 中文英文数字都可以加密
常见的加密方式是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')))
加密原理首先进行字符串的类型转换,然后在调用第二个函数进行加密算法
测试结果
去在线解密平台进行解密验证
结果验证成功说明加密算法没有问题
本篇只提供了加密的算法,解密算法请见下一篇文章