js加密解密字符串可自定义密码因子
2023-06-13 09:15:26 时间
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/>
<title>字符串加密</title>
</head>
<body>
<SCRIPTLANGUAGE="JavaScript">
<!--Begin
functionencrypt(str,pwd){
if(pwd==null||pwd.length<=0){
alert("Pleaseenterapasswordwithwhichtoencryptthemessage.");
returnnull;
}
varprand="";
for(vari=0;i<pwd.length;i++){
prand+=pwd.charCodeAt(i).toString();
}
varsPos=Math.floor(prand.length/5);
varmult=parseInt(prand.charAt(sPos)+prand.charAt(sPos*2)+prand.charAt(sPos*3)+prand.charAt(sPos*4)+prand.charAt(sPos*5));
varincr=Math.ceil(pwd.length/2);
varmodu=Math.pow(2,31)-1;
if(mult<2){
alert("Algorithmcannotfindasuitablehash.Pleasechooseadifferentpassword.\nPossibleconsiderationsaretochooseamorecomplexorlongerpassword.");
returnnull;
}
varsalt=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;
varenc_chr="";
varenc_str="";
for(vari=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);
}elseenc_str+=enc_chr.toString(16);
prand=(mult*prand+incr)%modu;
}
salt=salt.toString(16);
while(salt.length<8)salt="0"+salt;
enc_str+=salt;
returnenc_str;
}
functiondecrypt(str,pwd){
if(str==null||str.length<8){
alert("Asaltvaluecouldnotbeextractedfromtheencryptedmessagebecauseit"slengthistooshort.Themessagecannotbedecrypted.");
return;
}
if(pwd==null||pwd.length<=0){
alert("Pleaseenterapasswordwithwhichtodecryptthemessage.");
return;
}
varprand="";
for(vari=0;i<pwd.length;i++){
prand+=pwd.charCodeAt(i).toString();
}
varsPos=Math.floor(prand.length/5);
varmult=parseInt(prand.charAt(sPos)+prand.charAt(sPos*2)+prand.charAt(sPos*3)+prand.charAt(sPos*4)+prand.charAt(sPos*5));
varincr=Math.round(pwd.length/2);
varmodu=Math.pow(2,31)-1;
varsalt=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;
varenc_chr="";
varenc_str="";
for(vari=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;
}
returnenc_str;
}
//End-->
</script>
<formname="box"><center>
<tablecellpadding=0cellspacing=0border=0><tr><tdcolspan=3>
<textareacols=40rows=5wrap=virtualname=ipt>Welcometobaidu.com</textarea>
</td></tr>
<trheight=50><tdvalign="top">
<inputtype="button"onclick="document.box.opt.value=encrypt(document.box.ipt.value,document.box.pwd.value);"value="加密">
</td><tdalign="center"valign="center">
<inputtype="text"name="pwd"value="password">
</td><tdalign="right"valign="bottom">
<inputtype="button"onclick="document.box.ipt.value=decrypt(document.box.opt.value,document.box.pwd.value);"value="解密">
</td></tr>
<tr><tdcolspan=3>
<textareacols=40rows=5wrap=virtualname=opt></textarea>
</td></tr></table>
</center>
</form>
</body>
</html>
代码copy之后直接打开即可
相关文章
- JS跳转代码_js中跳转页面路径
- js中判断数组中是否包含某元素的方法有哪些_js判断数组里面是否包含某个元素
- js addEventListener事件捕获与冒泡,第三个参数详解,阻止事件传播
- 网页防止复制js代码
- (小说版)【简历优化平台-4】js魔改文件上传,django轻松接收
- 基于 Vue,使用 D3.js 画一个疫情趋势折线图
- 【JS 逆向百例】猿人学系列 web 比赛第二题:js 混淆 - 动态 cookie,详细剖析
- 如何使用jscythe并通过Node.js的Inspector机制执行任意JS代码
- 关于webview调用js出现has no method ‘toString’详解手机开发
- 数据JS技术实现实时获取Oracle数据(js实时获取oracle)
- JS实时链接Oracle让数据库访问更便捷(js实时连接oracle)
- JS类中定义原型方法的两种实现的区别
- JS正则表达式详解[收藏]
- js在客户端验证密码强度,兼容FireFox和IE
- js实现的日期操作类DateTime函数代码
- js延迟加载改变JS的位置加快网页加载速度
- js验证密码强弱的小例子
- js判断计算字符串长度/判断空的简单方法
- js中returnfalse(阻止)的用法
- 把字符串按照特定的字母顺序进行排序的js代码
- js获取当前地址JS获取当前URL的示例代码