在处理登录信息加密时遇到一个小问题, 需要将发送信息加密, 于是找了一下相关资料, 整理如下.
1.Base64
适用于传输容易被墙的信息
2.AES
由于密码需要放在客户端, 所以暂不考虑
3.RSA
支持公钥和私钥, 比较适传输加密信息, 1024位的可能3年后会被破解, 推荐2048位, 只是JS加密时间比较长, 9s左右
下面介绍一下RSA算法
1. wiki上关于RSA算法的介绍http://zh.wikipedia.org/wiki/RSA%E5%8A%A0%E5%AF%86%E6%BC%94%E7%AE%97%E6%B3%95不明白的地方可以参照下面的ppt
2. 介绍RSA算法原理的PPT,感谢作者看完后疑惑顿解.http://cis.sjtu.edu.cn/personal/wanglibin/sec/sec-chap07.ppt 或 http://haiyang.me/rsa/sec-chap07.ppt
3. 从下面这个地址http://bbs.pediy.com/showthread.php?t=130896可以大概了解RSA的安全情况
4. RSA位数介绍http://en.wikipedia.org/wiki/RSA_numbers
5. Javascript实现RSA算法http://www.ohdave.com/rsa/,缺点是未使用OO,不方便调用,过两天抽空改造一下
6. 项目实现http://sunxboy.iteye.com/blog/209156,未提供示例项目打包下载
RSA Example
1. Select primes: p=17 & q=11
2. Compute n = pq =17×11=187
3. Compute ø(n)=(p–1)(q-1)=16×10=160
4. Select e : gcd(e,160)=1; choose e=7
5. Determine d: de=1 mod 160 and d < 160 Value is d=23 since 23×7=161= 10×160+1
6. Publish public key KU={7,187}
7. Keep secret private key KR={23,17,11}
Sample RSA encryption/decryption is:
given message M = 88 (nb. 88<187)
encryption:
C = 887 mod 187 = 11
decryption:
M = 1123 mod 187 = 88
Javascript示例:原文地址
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>JavaScript RSA</title>
<script type="text/javascript" src="http://www.ohdave.com/BigInt.js"></script></script>
<script type="text/javascript" src="http://www.ohdave.com/RSA.js"></script></script>
<script type="text/javascript" src="http://www.ohdave.com/Barrett.js"></script></script>
</head>
<body>
<script type="text/javascript">
//公钥加密明文
setMaxDigits(19);
var publicKey = "25065286b2627846f19411522364326d";
var key1 = new RSAKeyPair("10001", "", publicKey);
var password = "jack1234";
var encryPssword = encryptedString(key1, password);
alert(encryPssword);
//私钥解密
var privateKey = "d3c495c2580d606089f1cbab136f071";
var key2 = new RSAKeyPair("10001", privateKey, publicKey);
var decryptedPssword = decryptedString(key2, encryPssword);
alert(decryptedPssword);
</script>
</body>
</html>
示例下载
注:上面只是公钥和私钥使用示例,使用JS生成公钥和私钥的算法还在进一步寻找中。下面是http://www.ohdave.com/rsa/上提供的Delphi公钥私钥生成器。
生成器下载
生成器Delphi源码下载