1
zhouzm 2014-03-28 16:47:55 +08:00
前半个问题估计是涉及到法律方面
|
2
cevincheung OP @zhouzm 呃,rsa是商业算法么?
|
3
dorentus 2014-03-28 19:45:47 +08:00
这么复杂的东西难度拿出来不是挺正常的么
|
4
cevincheung OP @dorentus 呃,那有没有一个可自由安装卸载的系统化扩展?php比如ext?没有啊 - -#。python是啥?
|
5
wy315700 2014-03-28 20:19:48 +08:00
RSA是商业算法
虽然算法和原理是开放的 |
6
dorentus 2014-03-28 20:27:14 +08:00
python 我不熟,不过可以搜到这个: https://pypi.python.org/pypi/rsa
pip install rsa 就能用了吧。 PHP 是有的吧,用的 openssl。http://www.php.net/manual/en/function.openssl-pkey-new.php |
7
wwqgtxx 2014-03-28 20:59:47 +08:00 via Android
pycrypto/m2crypto都可以试试pypi上有
大概是因为授权协议的问题吧 反正java自带了 |
8
xierch 2014-03-28 22:25:29 +08:00
|
9
010blue 2014-03-28 22:49:12 +08:00
RSA是比较耗时的,如果仅用php或python在语言层实现效率太慢,尤其是生成公/私钥的时候,所以一般都是使用系统的openssl来生成key,然后代码来实现加/解密,这个通常也是要依赖扩展(比如php需要高精度函数扩展bcmath,python的没使用过)。
@cevincheung |
10
sneezry 2014-03-28 23:17:50 +08:00
rsa有专利。
|
11
txlty 2014-03-29 22:30:36 +08:00 1
五年前,从php 4开始就自带了。而且跨平台没问题。
linux下默认支持。win下,编辑php.ini把extension=php_openssl.dll 打开。 测试代码: <?php function pubEncrypt($data,$pubKey){ //公钥加密 $pubKey = openssl_pkey_get_public($pubKey); openssl_public_encrypt($data, $encrypted, $pubKey); return base64_encode($encrypted); } function privDecrypt($data,$privKey){ //私钥解密 $privKey=openssl_pkey_get_private($privKey); $encrypted = base64_decode($data); openssl_private_decrypt($encrypted, $decrypted, $privKey); return $decrypted; } $pubKey="-----BEGIN PUBLIC KEY----- MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANSlDRoxEXWQrbIbFig3SuT/YH/K0q5/ OLBVloeXSr+dc+PWvXsRnwkxIkX5KznPCG9zLGe/Ga9XRyp+k2YrnrsCAwEAAQ== -----END PUBLIC KEY-----"; //公钥 $privKey="-----BEGIN RSA PRIVATE KEY----- MIIBOQIBAAJBANSlDRoxEXWQrbIbFig3SuT/YH/K0q5/OLBVloeXSr+dc+PWvXsR nwkxIkX5KznPCG9zLGe/Ga9XRyp+k2YrnrsCAwEAAQJACg70m7SOet0pGi+l0Kks 5cAetGzHonFqIQ0rXaaOZpnZ7VeBTjklFVlVv/6UGr0h7jLclU+0UcEZ1lxwQUBx wQIhAPoD6k+WOJld9D0p6ECLlS0ii4spj/T5o5ODdI+pkS2JAiEA2bwhZICOwb8w FjfJOoKFcfuUfTk0n8y1DokfRQBC/SMCIBoZ8opgioQodOk1yNOEPwy5QIxEyIyw y00JOlANSeTRAiBm+oeAlRzvnZEMsQ3HUnvy0N4F68xr19G6MjhL1jfYqQIgGiYa RlI1jeOWFLKyxOFcNim8HUhfqIebm8Mccc0/3kQ= -----END RSA PRIVATE KEY-----"; //私钥 $string='一二三四五六七八九十'; echo '公钥加密:'; $en = pubEncrypt($string,$pubKey); echo $en . '<br /> 私钥解密:'; $de = privDecrypt($en,$privKey); echo $de; ?> 毫无问题~ |