一段有用的javascript加密解密

今天在做一个老项目时,遇到一个需求,在javascript将url中的参数加密解密,从网上找发现了这段有用的代码:

[javascript] view plaincopy

  1. <SCRIPT LANGUAGE="JavaScript">
  2. <!-- Begin
  3. function Encrypt(str, pwd) {
  4. if(str=="")return "";
  5. str = escape(str);
  6. if(!pwd || pwd==""){ var pwd="1234"; }
  7. pwd = escape(pwd);
  8. if(pwd == null || pwd.length <= 0) {
  9. alert("Please enter a password with which to encrypt the message.");
  10. return null;
  11. }
  12. var prand = "";
  13. for(var I=0; I<pwd.length; I++) {
  14. prand += pwd.charCodeAt(I).toString();
  15. }
  16. var sPos = Math.floor(prand.length / 5);
  17. var mult = parseInt(prand.charAt(sPos) + prand.charAt(sPos*2) + prand.charAt(sPos*3) + prand.charAt(sPos*4) + prand.charAt(sPos*5));
  18. var incr = Math.ceil(pwd.length / 2);
  19. var modu = Math.pow(2, 31) - 1;
  20. if(mult < 2) {
  21. alert("Algorithm cannot find a suitable hash. Please choose a different password. /nPossible considerations are to choose a more complex or longer password.");
  22. return null;
  23. }
  24. var salt = Math.round(Math.random() * 1000000000) % 100000000;
  25. prand += salt;
  26. while(prand.length > 10) {
  27. prand = (parseInt(prand.substring(0, 10)) + parseInt(prand.substring(10, prand.length))).toString();
  28. }
  29. prand = (mult * prand + incr) % modu;
  30. var enc_chr = "";
  31. var enc_str = "";
  32. for(var I=0; I<str.length; I++) {
  33. enc_chr = parseInt(str.charCodeAt(I) ^ Math.floor((prand / modu) * 255));
  34. if(enc_chr < 16) {
  35. enc_str += "0" + enc_chr.toString(16);
  36. }else
  37. enc_str += enc_chr.toString(16);
  38. prand = (mult * prand + incr) % modu;
  39. }
  40. salt = salt.toString(16);
  41. while(salt.length < 8)salt = "0" + salt;
  42. enc_str += salt;
  43. return enc_str;
  44. }
  45. function Decrypt(str, pwd) {
  46. if(str=="")return "";
  47. if(!pwd || pwd==""){ var pwd="1234"; }
  48. pwd = escape(pwd);
  49. if(str == null || str.length < 8) {
  50. alert("A salt value could not be extracted from the encrypted message because it‘s length is too short. The message cannot be decrypted.");
  51. return;
  52. }
  53. if(pwd == null || pwd.length <= 0) {
  54. alert("Please enter a password with which to decrypt the message.");
  55. return;
  56. }
  57. var prand = "";
  58. for(var I=0; I<pwd.length; I++) {
  59. prand += pwd.charCodeAt(I).toString();
  60. }
  61. var sPos = Math.floor(prand.length / 5);
  62. var mult = parseInt(prand.charAt(sPos) + prand.charAt(sPos*2) + prand.charAt(sPos*3) + prand.charAt(sPos*4) + prand.charAt(sPos*5));
  63. var incr = Math.round(pwd.length / 2);
  64. var modu = Math.pow(2, 31) - 1;
  65. var salt = parseInt(str.substring(str.length - 8, str.length), 16);
  66. str = str.substring(0, str.length - 8);
  67. prand += salt;
  68. while(prand.length > 10) {
  69. prand = (parseInt(prand.substring(0, 10)) + parseInt(prand.substring(10, prand.length))).toString();
  70. }
  71. prand = (mult * prand + incr) % modu;
  72. var enc_chr = "";
  73. var enc_str = "";
  74. for(var I=0; I<str.length; I+=2) {
  75. enc_chr = parseInt(parseInt(str.substring(I, I+2), 16) ^ Math.floor((prand / modu) * 255));
  76. enc_str += String.fromCharCode(enc_chr);
  77. prand = (mult * prand + incr) % modu;
  78. }
  79. return unescape(enc_str);
  80. }
  81. //  End -->
  82. </script>

以后碰到加密解密问题,直接将上述代码写成一个js文件,就搞定。省事了。。。。

时间: 2024-07-30 10:17:07

一段有用的javascript加密解密的相关文章

JS_七种JAVASCRIPT加密/解密方法

本文一共介绍了七种JAVASCRIPT加密方法. 一:最简单的加密解密 二:转义字符的妙用 三:使用Microsoft出品的脚本编码器Script Encoder来进行编码 (自创简单解码) 四:任意添加NUL空字符(十六进制00H) (自创) 五:无用内容混乱以及换行空格TAB大法 六:自写解密函数法 七:错误的利用 在做网页时(其实是网页木马呵呵),最让人烦恼的是自己辛辛苦苦写出来的客户端IE运行的JAVASCRIPT代码常常被别人轻易的拷贝,实在让自己的心里有点不是滋味,要知道自己写点东西

JavaScript加密解密7种方法总结分析

原文地址:http://wenku.baidu.com/view/9048edee9e31433239689357.html 本文一共介绍了七种javascript加密方法: 在做网页时(其实是网页木马呵呵),最让人烦恼的是自己辛辛苦苦写出来的客户端IE运行的javascript代码常常被别人轻易的拷贝,实在让自己的心里有点不是滋味,要知道自己写点东西也挺累的......^*^ 但我们也应该清楚地认识到因为javascript代码是在IE中解释执行,要想绝对的保密是不可能的,我们要做的就是尽可能

30段有用的javascript代码

1. 如何区分IE及非IE浏览器 if(!+[1,]){ console.log("这是IE浏览器"): } else{ console.log("这不是IE浏览器"): } <script type="text/javascript"> alert([1,2]);//相当于alert([1,2].toString()); --这在IE与非IE上都相同,都会弹出"1,2" alert([1,]);//相当于aler

JavaScript加密解密压缩工具

1 <script> 2 a=62; 3 4 function encode() { 5 var code = document.getElementById('code').value; 6 code = code.replace(/[\r\n]+/g, ''); 7 code = code.replace(/'/g, "\\'"); 8 var tmp = code.match(/\b(\w+)\b/g); 9 tmp.sort(); 10 var dict = [];

JAVASCRIPT加密方法,JS加密解密综述(7种)

一:最简单的加密解密 对于JAVASCRIPT函数escape()和unescape()想必是比较了解啦(很多网页加密在用它们),分别是编码和解码字符串,比如例子代码 用escape()函数加密后变为如下格式: alert%28%22%u9ED1%u5BA2%u9632%u7EBF%22%29%3B 如何?还看的懂吗?当然其中的ASCII字符"alert"并没有被加密,如果愿意我们可以写点JAVASCRIPT代码重新把它加密如下: %61%6C%65%72%74%28%22%u9ED1

javascript DES加密解密算法

原文:javascript DES加密解密算法 源代码下载地址:http://www.zuidaima.com/share/1550463672044544.htm javascript DES加密解密算法,java通过ScriptEngineManager调用的例子. 源码截图:

php、javascript使用rsa进行加密/解密

生成密钥:a. 生成原始文件: openssl genrsa -out rsa_private_key.pem 1024 b. 转换格式: openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out private_key.pem c. 生成公钥: openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem php

Java &amp; PHP &amp; Javascript 通用 RSA 加密 解密 (长字符串)

系统与系统的数据交互中,有些敏感数据是不能直接明文传输的,所以在发送数据之前要进行加密,在接收到数据时进行解密处理:然而由于系统与系统之间的开发语言不同. 本次需求是生成二维码是通过java生成,由php来解密.基于这类需求所以选择了RSA进行加解密. 生成RSA公私钥分成三步生成RSA公私钥,第1.2步可以满足php的使用,由于java的私钥要转化为PKCS8格式才能使用,所以执行第3步来实现. 还有一种加密方式参考: DES ECB 模式 JAVA PHP C# 实现 加密 解密 兼容 .

javaScript base64算法的实现 与 java中的base64 加密 解密

前段时间,工作需要,需要用js和java配套的base64算法,奈何没找到,然后网上抄一套.用起来还是很有效的. 闲言少絮,直接上干货. js 版base 64 算法  base64.js var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; //将Ansi编码的字符串进行Base64编码 function encode64(input) { var output = &quo