字符编码加密

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>

<HEAD>

<meta http-equiv="Content-Type" content="text/html; charset=GB2312" />

<TITLE> 加密解密(BY:firer) </TITLE>

 

 

<SCRIPT LANGUAGE="JavaScript">

<!--

function encrypt(str, pwd)

{

//判断密钥是否为空

if(pwd == null || pwd.length <= 0)

{

   alert("请输入密钥");

   return null;

}

 

//得到密钥的字符串的Unicode

var prand = "";

for(var i=0; i<pwd.length; i++)

{

   prand += pwd.charCodeAt(i).toString();

   //alert(prand);

}

 

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));//返回从字符串转换得到的整数.          (charAt返回 String 对象的指定索引处的字符。)

var incr = Math.ceil(pwd.length / 2);//返回数的上限

var modu = Math.pow(2, 31) - 1;//返回基数表达式的指定次幂的值

if(mult < 2)

{

   alert("您输入的密钥过于简单或者是长度太短");

   return null;

}

 

var salt = Math.round(Math.random() * 1000000000) % 100000000; //Math.round是四舍五入函数。 Math.random是返回一个伪随机数(01之间的double型数)

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,stu)

{

if(str == null || str.length < 8)

{

   alert("您输入的内容过短,请重新输入");

   return;

}

if(pwd == null || pwd.length <= 0)

{

   alert("请输入密钥");

   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 = "";

if(stu==1)

{

   for(var i=0; i<str.length; i+=2)

   {

    enc_chr = parseInt(parseInt(str.substring(i, i+2), 16) ^ Math.floor((prand / modu) * 255));

    //alert(enc_chr);

    enc_str += String.fromCharCode(enc_chr);

    //alert(enc_str);

    prand = (mult * prand + incr) % modu;

   }

}

if(stu==2)

{

   for(var i=0; i<str.length; i+=4)

   {

    enc_chr = parseInt(parseInt(str.substring(i, i+4), 16) ^ Math.floor((prand / modu) * 255));

    //alert(enc_chr);

    enc_str += String.fromCharCode(enc_chr);

    //alert(enc_str);

    prand = (mult * prand + incr) % modu;

   }

}

return enc_str;

}

 

function show(id)

{

var d=window.clipboardData.getData("text");

if(id=='ipt')

   document.box.ipt.value=d;

else

   document.box.opt.value=d;

}

function copy(id)

{

var t=document.getElementById(id);

//alert(t.value.length);

if(t.value.length>0)

{

   t.select();

   window.clipboardData.setData('text',t.createTextRange().text);

   alert("内容已经复制到剪贴板");

}

else

   alert("没有可以复制的内容");

}

 

 

//    -->

</script>

 

</HEAD>

 

 

<BODY>

 

<form name="box">

<BR>

<BR>

<center>

 

<H1>加密解密</H1>

<H3>BYfirer</H3>

<table cellpadding=0 cellspacing=0 border=0>

<tr>

   <td valign="top" colspan=3>

    <FONT SIZE="1">请输入要处理的字符串:</FONT>

   </td>

</tr>

<tr>

   <td colspan=2>

    &nbsp;&nbsp;&nbsp;&nbsp;<textarea cols="60" rows="6" wrap="virtual" name="ipt"></textarea>

   </td>

</tr>

<tr>

   <td>&nbsp;&nbsp;&nbsp;&nbsp;<input type="button" οnclick="copy('ipt');" value=" 复制内容 "></td>

   <td><input type="button" οnclick="show('ipt');" value=" 粘帖内容 "></td>

</tr>

<tr>

   <td>

    <br>

   </td>

</tr>

<tr>

   <td align="left" valign="center">

    <FONT SIZE="1">密钥:</FONT><input type="text" name="pwd" value="firer">

   </td>

   <td align="center">

    <input type="button" οnclick="document.box.opt.value= encrypt(document.box.ipt.value, document.box.pwd.value);" value=" 加密 ">

    <input type="button" οnclick="document.box.opt.value= decrypt(document.box.ipt.value, document.box.pwd.value,1);" value=" 解密 ">

    <input type="button" οnclick="document.box.opt.value= decrypt(document.box.ipt.value, document.box.pwd.value,2);" value=" 中文解密 ">

   </td>

</tr>

<tr>

   <td>

    <br>

   </td>

</tr>

<tr>

   <td valign="top" colspan=3>

    <FONT SIZE="1">处理结果:</FONT>

   </td>

</tr>

<tr>

   <td colspan=2>

    &nbsp;&nbsp;&nbsp;&nbsp;<textarea cols="60" rows="6" wrap="virtual" name="opt"></textarea>

   </td>

</tr>

<tr>

   <td>&nbsp;&nbsp;&nbsp;&nbsp;<input type="button" οnclick="copy('opt');" value=" 复制内容 "></td>

   <td><input type="button" οnclick="show('opt');" value=" 粘帖内容 "></td>

</tr>

</table>

</center>

</form>

 

</BODY>

</HTML>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值