> 文档中心 > JavaScript 实现BASE58加密 中文英文数字都可以加密

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')))

加密原理首先进行字符串的类型转换,然后在调用第二个函数进行加密算法
测试结果
JavaScript 实现BASE58加密 中文英文数字都可以加密
在线解密平台进行解密验证

结果验证成功说明加密算法没有问题
本篇只提供了加密的算法,解密算法请见下一篇文章

怎么买股票