JavaScript 自写加密解密函数
JavaScript 自写加密解密函数
版权声明:本文为CSDN博主「zshsats」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zshsats/article/details/82772597
加密函数:
/**
* 加密算法
* str:要加密的字符串
* key:指定加密的字符
*/
function enc(str,key) {var length = key.length;var keyList = key.split("");var s="",bit,bit1,bit2,bit3,bit4;for(var i = 0;i<str.length;i++){bit = str.charCodeAt(i); //获得字符的Unicode 编码(数字)bit1=bit%length; bit=(bit-bit1)/length;bit2=bit%length;bit=(bit-bit2)/length;bit3=bit%length;bit=(bit-bit3)/length;bit4=bit%length;//bit1,bit2,bit3,bit4 key秘钥的位置//keyList[bit4]+keyList[bit3]+keyList[bit2]+keyList[bit1] 将str中的每一个字符对应秘钥的四个字符s+=keyList[bit4]+keyList[bit3]+keyList[bit2]+keyList[bit1];}return s;
}
解析:不要把参数str
和key
搞混,二者不一样,例如:
// buhehaizhiyan:这是要加密的字符串【即参数str】// !@#$%&* : 这是指定的加密字符【即参数key】enc('buhehaizhiyan','!@#$%&*');
如果还不理解,一会看一下具体效果就会明了;
解密函数:
/**
* 解密算法
* str:加密过后的字符串
* key:指定解密的字符串[应和加密字符串指定的加密字符一致]
*/
dec(str,key) {var length = key.length;var bit,bit1,bit2,bit3,bit4,j=0,s;var s = new Array(Math.floor(str.length/4));var result =[];bit = s.length;for(var i=0;i<bit;i++){bit1 = key.indexOf(str.charAt(j));j++;bit2 = key.indexOf(str.charAt(j));j++;bit3 = key.indexOf(str.charAt(j));j++;bit4 = key.indexOf(str.charAt(j));j++;//bit1,bit2,bit3,bit4 每四个秘钥字符的位置 对应的是str的一个字符 s[i]=bit1*length*length*length+bit2*length*length+bit3*length+bit4;//bit1*length*length*length+bit2*length*length+bit3*length+bit4还原str每个字符的Unicode 编码result.push(String.fromCharCode(s[i])); //将Unicode 编码还原数据}//还原字符return result.join("");
}
解析:str
和key
参数在解密函数里代表的意义就不同了,看例子:
// !@#$%^&**&^^%$#@@#$$%%^ : 指的是你加密过后的字符串 [即str]// !@#$%^&*: 指定解密的字符串 [即key][应和加密字符串指定的加密字符一致,不然解密出来的会和原来的不同]dec('!@#$%^&**&^^%$#@@#$$%%^','!@#$%^&*');
示例:
- 我们对 字符串:
this is a string
进行加密解密操作。 - 指定加密解密字符串:
!@#$%^&*
加密:
var result = enc('this is a string','!@#$%^&*');
console.log(result);
输出结果:
!@&%!@^!!@^@!@&$!!%!!@^@!@&$!!%!!@%@!!%!!@&$!@&%!@&#!@^@!@^&!@%*
- 输出的结果,全部都用我们指定的那几个加密字符,用了一些规则进行了加密。
解密
var result = dec('!@&%!@^!!@^@!@&$!!%!!@^@!@&$!!%!!@%@!!%!!@&$!@&%!@&#!@^@!@^&!@%*','!@#$%^&*');
console.log(result);
输出结果:
this is a string
- 把加密过后的字符串,用我们指定的解密字符串,进行解密,就生成了我们原来的结果。
JavaScript 自写加密解密函数相关推荐
- php中的base64,php中base64_decode与base64_encode加密解密函数
php中base64_decode与base64_encode加密解密函数,实例分析了base64加密解密函数的具体用法,具有一定的实用价值,需要的朋友可以参考下 本文实例讲述了php中base64_ ...
- php动态密码和加密解密函数的使用(动态密码、Discuz核心函数AuthCode、任意输入密码验证)
php加密解密的使用 一.项目说明 二.项目分析 1.js外部文件 2.HTML容器构建 3.layui前端验证 4.php后端验证 封装函数 密码验证规则 strpos内置函数 三.经典的核心加密函 ...
- 各种加密解密函数(URL加密解密、sha1加密解密、des加密解密)
普通hash函数如md5.sha1.base64等都是不可逆函数.虽然我们利用php可以利用这些函数写出可逆函数来.但是跨语言时这类可逆函数非常难搞定.所以这时尽量使用AES DES RC4 Rabb ...
- 【C 语言】文件操作 ( 文件加密解密 | 使用第三方 DES 加密解密库 | 头文件导入 | 兼容 C++ 语言 | 加密解密函数说明 )
文章目录 一.导入第三方库头文件 二.头文件说明 1.兼容 C++ 语言 2.头文件导入限制 3.加密解密函数说明 一.导入第三方库头文件 对文件进行加密 , 将文件中的数据分成若干块 , 一块一块的 ...
- 加密解密php,2个比较经典的PHP加密解密函数分享
项目中有时我们需要使用PHP将特定的信息进行加密,也就是通过加密算法生成一个加密字符串,这个加密后的字符串可以通过解密算法进行解密,便于程序对解密后的信息进行处理. 最常见的应用在用户登录以及一些AP ...
- php可逆加密解密函数,php 好用可逆的 加密解密 函数。
php 好用可逆的加密解密函数. function encode($content, $key = 'pass' ) { // 加密数据的函数 , 主要进行移位操作 $key = md5($key); ...
- 字符串加密解密函数 (C#) (转)
字符串加密解密函数 (C#) (转) 字符串加密解密函数 (C#) using System; using System.Text; using System.Security.Cryptograph ...
- 自己实现的php加密解密函数结果纯字母和数字
php自带的base64加密解密函数大部分人都知道,加密后很容易被解密,所以就自己实现的php加密解密函数,密文是字母和数字组合. <?php /* *加密 */ function encode ...
- 介绍几个PHP 自带的加密解密函数
PHP 自带的加密解密函数 目前经常使用的加密函数有:md5(), sha1(), crypt(), base64_encode(), urlencode() . 其中 md5(), sha1(), ...
最新文章
- @ConditionalOnProperty 详解
- analyzing problems
- 错误 SQL TOP子句中的行数必须是整数
- 洛谷 P2486 [SDOI2011]染色 LCT
- ubuntu中文文件名乱码
- html输出text,为什么text();和html();输出结果不一样呢?
- springioc注解版运行效果演示
- vs entityframwork Validation failed for one or more entities
- Hadoop框架:DataNode工作机制详解
- C罗捧得史上首个区块链得分王奖杯 1600名支付宝用户获“同款”
- 微信宣布将推出自有输入法后,搜狗快马加鞭赶来泼冷水......
- efficientnet-yolo3-tf2的实现
- [转载] Python从字符串中删除字符
- 根据ip和子网掩码技术可用网段的在线工具
- Spring mvc + mybatis+maven集成swagger ui自动生成api文档
- python从某行开始读_python 读取行
- ValueError: Cannot have number of splits n_splits=10 greater than the number of samples: 0
- SIM相关术语MCC MNC UIM SIM PIN PUK简介
- RestTemplateConfig
- IDEA解决开两个窗口问题