PHP-请教公钥、私钥加解密算法和用法

PHP-请教公钥、私钥加解密算法和用法

甜柠檬 发布于 2017-03-06 字数 81 浏览 1174 回复 3

我用putty生成了public key和private key,想用在传输加解密,请教算法和流程?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

灵芸 2017-10-12 3 楼

RSA算法概述如下:

找两素数p和q
取n=pq
取t=(p-1)
(q-1)
取任何一个数e,要求满足e<t并且e与t互素(就是最大公因数为1)
取d*e mod t==1

这样最终得到三个数: n d e

设消息为数M (M <n)
设c=(M^d) mod n就得到了加密后的消息c
设m=(c^e) mod n则 m == M,从而完成对c的解密。
注:^表示次方,上面两式中的d和e可以互换。

在加密中:
n d两个数构成公钥,可以告诉别人;
n e两个数构成私钥,e自己保留,不让任何人知道。
给别人发送的信息使用e加密,只要别人能用d解开就证明信息是由你发送的,构成了签名机制。
别人给你发送信息时使用d加密,这样只有拥有e的你能够对其解密

想挽留 2017-05-17 2 楼

public key和private key是公钥密码学(非对称加密)的概念。public key公开,private key自己用。
非对称密码加密速度慢,用于传送对称密码的会话密钥。
对称密码加密速度较快,用于加密大量数据加密。

算法直接使用putty的加密算法。
流程如下
1.服务端生成了public key和private key后,在所有客户端配置好public key。
2.若传输的数据量不大,直接使用非对称算法加密通信数据。若量很大,由客户端产生会话密钥(对称密码中使用),并使用配置好的公钥加密传送给服务端。服务端接收后使用私钥解密。以后的通信采用这个会话密钥的对称密码加解密。上述过程称为密钥协商过程,实际使用中还要考虑认证,防止中间人攻击。有些繁琐,一般软件会自带这个过程,配置下就行。
3.还有一种简单的方法,传输数据都使用对称加密,服务器和客户端都使用一个相同的密钥加解密。

注意
1.使用加解密算法时,不要在网上copy一段代码就拿来使用,有很多代码是存在严重的漏洞的,容易被还原成明文。
2.加密算法选用,非对称密码使用3DES、AES、TEA、BlowFish、CAST等。对称密码使用RSA、ECC(椭圆曲线)。

浮生未歇 2017-03-18 1 楼

应该跟https的流程是一样的,都是基于ssl协议的