使用非对称加密加密算法生成一对公钥和私钥, 可以使用公钥加密明文然后私钥解密,也可以使用私钥加密然后公钥进行解密.
加密通信
核心是公钥加密私钥解密.
甲方把公钥交给要通信的乙方, 乙方使用甲方的公钥进行加密信息, 然后把加密结果发送给甲方, 甲方收到加密信息后使用私钥进行解密. 这样就算第三者知道了公钥和加密信息也无法进行解密, 因为解密必须使用私钥.
数字签名
核心是私钥加密公钥解密和哈希算法.
甲方先对自己要发送的报文使用哈希算法获得摘要, 然后使用私钥对摘要进行加密并且跟要发送的报文一起发给乙方. 乙方收到后使用甲方的公钥对签名进行解密, 并且对报文信息进行同样的哈希算法得到哈希值再跟上面摘要的解密结果进行对比, 如果一样就可以确认确实是甲方发的报文而不是第三者伪冒并且报文内容完整没有被篡改过.
区块链加密算法
比特币和以太坊都使用ECC椭圆曲线加密算法secp256k1. 各种语言大都有现成的第三方库。
ECC对比RSA的优势:
- 安全性能更高。 如160位ECC与1024位RSA、DSA有相同的安全强度。
- 计算量小,处理速度快。在私钥的处理速度上(解密和签名),ECC远 比RSA、DSA快得多。
- 存储空间占用小。 ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多, 所以占用的存储空间小得多。