一段有用的javascript加密解密
今天在做一个老项目时,遇到一个需求,在javascript将url中的参数加密解密,从网上找发现了这段有用的代码:
- <SCRIPT LANGUAGE="JavaScript">
- <!-- Begin
- function Encrypt(str, pwd) {
- if(str=="")return "";
- str = escape(str);
- if(!pwd || pwd==""){ var pwd="1234"; }
- pwd = escape(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=="")return "";
- if(!pwd || pwd==""){ var pwd="1234"; }
- pwd = escape(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 unescape(enc_str);
- }
- // End -->
- </script>
以后碰到加密解密问题,直接将上述代码写成一个js文件,就搞定。省事了。。。。
一段有用的javascript加密解密的更多相关文章
- JavaScript加密解密7种方法总结分析
原文地址:http://wenku.baidu.com/view/9048edee9e31433239689357.html 本文一共介绍了七种javascript加密方法: 在做网页时(其实是网页木 ...
- JavaScript加密解密7种方法
注:本文纯转贴,供学习使用 本文一共介绍了七种javascript加密方法: 在做网页时(其实是网页木马呵呵),最让人烦恼的是自己辛辛苦苦写出来的客户端IE运行的javascript代码常常被别人轻易 ...
- 通用RSA加密 - PHP+Java+Javascript加密解密
php端生成 公钥私钥 1.openssl genrsa -out rsa_private_key.pem 1024 私钥 2.openssl rsa -in rsa_private_key.p ...
- 30段有用的javascript代码
1. 如何区分IE及非IE浏览器 if(!+[1,]){ console.log("这是IE浏览器"): } else{ console.log("这不是IE浏览器&qu ...
- JavaScript加密解密压缩工具
<script> a=62; function encode() { var code = document.getElementById('code').value; code = co ...
- 兼容javascript和C#的RSA加密解密算法,对web提交的数据进行加密传输
Web应用中往往涉及到敏感的数据,由于HTTP协议以明文的形式与服务器进行交互,因此可以通过截获请求的数据包进行分析来盗取有用的信息.虽然https可以对传输的数据进行加密,但是必须要申请证书(一般都 ...
- JAVASCRIPT加密方法,JS加密解密综述(7种)
一:最简单的加密解密 对于JAVASCRIPT函数escape()和unescape()想必是比较了解啦(很多网页加密在用它们),分别是编码和解码字符串,比如例子代码 用escape()函数加密后变为 ...
- C#, Java, PHP, Python和Javascript几种语言的AES加密解密实现[转载]
原文:http://outofmemory.cn/code-snippet/35524/AES-with-javascript-java-csharp-python-or-php c#里面的AES加密 ...
- Javascript实现base64的加密解密【转】
场景 这几天使用PHP向前端传值的时候,遇到一个问题,要将代码传过去赋值.如果使用urlencode()和urldecode()函数,就会出现js无法解码的情况,因为php和js的相关函数算法不一致. ...
随机推荐
- CURL实现HTTP的GET POST方法
Curl是Linux下一个非常强大的http命令行工具,其功能十分强大. 一.CURL对HTTP的常规訪问 1. 訪问站点 $ curl http://www.linuxidc.com 回车之后.ww ...
- 《Linux Device Drivers》第十五章 内存映射和DMA——note
简单介绍 很多类型的驱动程序编程都须要了解一些虚拟内存子系统怎样工作的知识 当遇到更为复杂.性能要求更为苛刻的子系统时,本章所讨论的内容迟早都要用到 本章的内容分成三个部分 讲述mmap系统调用的实现 ...
- Python 列表 append() 方法
描述 Python 列表 append() 方法用于在列表末尾追加新的对象. 语法 append() 方法语法: L.append(obj) 参数 obj -- 追加到列表末尾的对象. 返回值 该方法 ...
- Win8.1的IE11无法打开,必须使用管理员身份运行
不知道大家有没有遇到这种情况,在毫不知情的情况下 IE11 突然打不开了,必须要用管理员身份运行才可以打开,而且重置浏览器这个方法也不奏效. 今天本人也遇到了,上网查找发现是注册表权限的问题,原因尚不 ...
- [na][QoS]cisco3560限速配置案例-收集于网工泡泡
网络中常用到这些:CISCO和H3C-MAC过滤+端口限速+端口镜像+端口隔离 不同的方式不同的思想:嘎嘎 其他各个厂商的限速链接:http://pan.baidu.com/s/1hrIMoSG 密码 ...
- SICP-Exercise 1.5
Exercise 1.5. Ben Bitdiddle has invented a test to determine whether the interpreterhe is faced wit ...
- error: expected expression before 'struct'
错误原因: 使用了offsetof函数,却没有包含头文件<stddef.h> 解决办法: 包含<stddef.h>
- C#解压或压缩文件夹
这里主要解决文件夹包含文件夹的解压缩问题.1)下载SharpZipLib.dll,在http://www.icsharpcode.net/OpenSource /SharpZipLib/Downloa ...
- The Ultimate List of Open Source Static Code Analysis Security Tools
https://www.checkmarx.com/2014/11/13/the-ultimate-list-of-open-source-static-code-analysis-security- ...
- ny220 推桌子
推桌子 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 The famous ACM (Advanced Computer Maker) Company has rent ...