背景
现有的非对称加密算法有RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)
使用最广泛的是RSA算法,Elgamal是另一种常用的非对称加密算法
原理
代码生成一个随机数:123123123jjasfaoif12312hsihdfiodasdfsa0dfasd
以该随机数为输入,通过非对称加密算法,输出两个字符串:
key1和key2
其中一个作为公钥,那么另外一个就是私钥;公钥和私钥没有严格的定义,对于算法而言,两者没有先后顺序
公钥加密的话,用私钥解密
私钥加密的话,用公钥解密
公钥无法解密公钥加密的东西
私钥无法解密私钥加密的东西
特征
效率低,可安全传输,一般都综合使用非对称加密和对称加密
应用过程
定义
A :张三 A1:A的公钥 A2:A的私钥
B:李四 B1:B的公钥 B2:B的私钥
sign数字签名 FS文件摘要
场景:A向B发送一个100M的文件
A B 两个人 AB各自带有自己的公钥(A1 B1)和私钥(A2 B2)
A向B发送一个100M的文件(F)
1.A将F通过单向散列算法(md5),输出文件摘要(FS)
2.A用A2对FS进行加密,输出(sign1)--------数字签名
3.A将F、A1、sign1打包,一并交给B
4.B得到F、A1、sign1
5.B将F通过单向散列算法(md5),输出文件摘要(FS2)
6.B用A1和sign1解析出文件摘要(FS3)
7.如果FS3和FS2相同,标明文件没有被篡改
上述过程简单描述了非对称加密的应用过程
拓展
如果A的私钥A2被黑客盗取该怎么办,有没有更好的办法防止黑客盗取
如果A抵赖,不承认这是自己的私钥怎么办
详见“数字证书一文”