js加密解密字符串可自定义密码因子


Posted in Javascript onMay 13, 2014
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title>字符串加密</title> 
</head> 
<body> 
<SCRIPT LANGUAGE="JavaScript"> 
<!-- Begin 
function encrypt(str, pwd) { 
if(pwd == null || pwd.length <= 0) { 
alert("Please enter a password with which to encrypt the message."); 
return null; 
} 
var prand = ""; 
for(var i=0; i<pwd.length; i++) { 
prand += pwd.charCodeAt(i).toString(); 
} 
var sPos = Math.floor(prand.length / 5); 
var mult = parseInt(prand.charAt(sPos) + prand.charAt(sPos*2) + prand.charAt(sPos*3) + prand.charAt(sPos*4) + prand.charAt(sPos*5)); 
var incr = Math.ceil(pwd.length / 2); 
var modu = Math.pow(2, 31) - 1; 
if(mult < 2) { 
alert("Algorithm cannot find a suitable hash. Please choose a different password. \nPossible considerations are to choose a more complex or longer password."); 
return null; 
} 
var salt = Math.round(Math.random() * 1000000000) % 100000000; 
prand += salt; 
while(prand.length > 10) { 
prand = (parseInt(prand.substring(0, 10)) + parseInt(prand.substring(10, prand.length))).toString(); 
} 
prand = (mult * prand + incr) % modu; 
var enc_chr = ""; 
var enc_str = ""; 
for(var i=0; i<str.length; i++) { 
enc_chr = parseInt(str.charCodeAt(i) ^ Math.floor((prand / modu) * 255)); 
if(enc_chr < 16) { 
enc_str += "0" + enc_chr.toString(16); 
} else enc_str += enc_chr.toString(16); 
prand = (mult * prand + incr) % modu; 
} 
salt = salt.toString(16); 
while(salt.length < 8)salt = "0" + salt; 
enc_str += salt; 
return enc_str; 
} function decrypt(str, pwd) { 
if(str == null || str.length < 8) { 
alert("A salt value could not be extracted from the encrypted message because it's length is too short. The message cannot be decrypted."); 
return; 
} 
if(pwd == null || pwd.length <= 0) { 
alert("Please enter a password with which to decrypt the message."); 
return; 
} 
var prand = ""; 
for(var i=0; i<pwd.length; i++) { 
prand += pwd.charCodeAt(i).toString(); 
} 
var sPos = Math.floor(prand.length / 5); 
var mult = parseInt(prand.charAt(sPos) + prand.charAt(sPos*2) + prand.charAt(sPos*3) + prand.charAt(sPos*4) + prand.charAt(sPos*5)); 
var incr = Math.round(pwd.length / 2); 
var modu = Math.pow(2, 31) - 1; 
var salt = parseInt(str.substring(str.length - 8, str.length), 16); 
str = str.substring(0, str.length - 8); 
prand += salt; 
while(prand.length > 10) { 
prand = (parseInt(prand.substring(0, 10)) + parseInt(prand.substring(10, prand.length))).toString(); 
} 
prand = (mult * prand + incr) % modu; 
var enc_chr = ""; 
var enc_str = ""; 
for(var i=0; i<str.length; i+=2) { 
enc_chr = parseInt(parseInt(str.substring(i, i+2), 16) ^ Math.floor((prand / modu) * 255)); 
enc_str += String.fromCharCode(enc_chr); 
prand = (mult * prand + incr) % modu; 
} 
return enc_str; 
} 
// End --> 
</script> 
<form name="box"><center> 
<table cellpadding=0 cellspacing=0 border=0><tr><td colspan=3> 
<textarea cols=40 rows=5 wrap=virtual name=ipt>Welcome to baidu.com</textarea> 
</td></tr> 
<tr height=50><td valign="top"> 
<input type="button" onclick="document.box.opt.value= encrypt(document.box.ipt.value, document.box.pwd.value);" value="加密"> 
</td><td align="center" valign="center"> 
<input type="text" name="pwd" value="password"> 
</td><td align="right" valign="bottom"> 
<input type="button" onclick="document.box.ipt.value= decrypt(document.box.opt.value, document.box.pwd.value);" value="解密"> 
</td></tr> 
<tr><td colspan=3> 
<textarea cols=40 rows=5 wrap=virtual name=opt></textarea> 
</td></tr></table> 
</center> 
</form> 
</body> 
</html>

代码copy之后直接打开即可
Javascript 相关文章推荐
JQuery的ON()方法支持的所有事件罗列
Feb 28 Javascript
jquery实现简单的自动播放幻灯片效果
Jun 13 Javascript
jquery计算鼠标和指定元素之间距离的方法
Jun 26 Javascript
在WordPress中加入Google搜索功能的简单步骤讲解
Jan 04 Javascript
AngularJS 中的Promise --- $q服务详解
Sep 14 Javascript
JavaScript基于activexobject连接远程数据库SQL Server 2014的方法
Jul 12 Javascript
js数组方法reduce经典用法代码分享
Jan 07 Javascript
node.js的Express服务器基本使用教程
Jan 09 Javascript
Vue+Element-UI实现上传图片并压缩
Nov 26 Javascript
vue父子模板传值问题解决方法案例分析
Feb 26 Javascript
html中创建并调用vue组件的几种方法汇总
Nov 17 Javascript
Javascript之datagrid查询详解
Sep 15 Javascript
JavaScript用Number方法实现string转int
May 13 #Javascript
javascript中expression的用法整理
May 13 #Javascript
JS函数重载的解决方案
May 13 #Javascript
一个JS函数搞定网页标题(title)闪动效果
May 13 #Javascript
JS获得浏览器版本和操作系统版本的例子
May 13 #Javascript
当滚动条滚动到页面底部自动加载增加内容的js代码
May 13 #Javascript
js语法学习之判断一个对象是否为数组
May 13 #Javascript
You might like
php self,$this,const,static,-&amp;gt;的使用
2009/10/22 PHP
hessian 在PHP中的使用介绍
2010/12/13 PHP
php5.3 注意事项说明
2013/07/01 PHP
如何让您的中波更粗更长 - 中波框形天线制作
2021/03/10 无线电
如何快速的呈现我们的网页的技巧整理
2007/07/01 Javascript
iframe 异步加载技术及性能分析
2011/07/19 Javascript
yui3的AOP(面向切面编程)和OOP(面向对象编程)
2015/05/01 Javascript
使用jQuery操作DOM的方法小结
2017/02/27 Javascript
关于使用js算总价的问题
2017/06/23 Javascript
JS实现多张图片预览同步上传功能
2017/06/23 Javascript
让div运动起来 js实现缓动效果
2017/07/06 Javascript
原生JS实现移动端web轮播图详解(结合Tween算法造轮子)
2017/09/10 Javascript
用Axios Element实现全局的请求loading的方法
2018/03/15 Javascript
javascriptvoid(0)含义以及与&quot;#&quot;的区别讲解
2019/01/19 Javascript
从0到1构建vueSSR项目之node以及vue-cli3的配置
2019/03/07 Javascript
小程序点餐界面添加购物车左右摆动动画
2020/09/23 Javascript
python读取json文件并将数据插入到mongodb的方法
2015/03/23 Python
使用python加密自己的密码
2015/08/04 Python
利用python实现xml与数据库读取转换的方法
2017/06/17 Python
Python实现的文本编辑器功能示例
2017/06/30 Python
彻底搞懂Python字符编码
2018/01/23 Python
python递归全排列实现方法
2018/08/18 Python
图文详解python安装Scrapy框架步骤
2019/05/20 Python
详解Django配置优化方法
2019/11/18 Python
python使用协程实现并发操作的方法详解
2019/12/27 Python
Python APScheduler执行使用方法详解
2020/12/10 Python
英国No.1文具和办公用品在线:Euroffice
2016/09/21 全球购物
Swanson中国官网:美国斯旺森健康产品公司
2021/03/01 全球购物
法律专业个人实习自我鉴定
2013/09/23 职场文书
服务口号大全
2014/06/11 职场文书
房屋租赁合同解除协议书
2014/10/11 职场文书
班干部竞选演讲稿(精选5篇)
2019/09/24 职场文书
Vue+Element UI实现概要小弹窗的全过程
2021/05/30 Vue.js
如何使用PyCharm及常用配置详解
2021/06/03 Python
MySQL开启事务的方式
2021/06/26 MySQL
MySQL数据库简介与基本操作
2022/05/30 MySQL