本文先介绍非对称加密算法,然后聊一聊椭圆曲线密码算法(Elliptic Curve Cryptography,ECC),最后才是本文的主题国密非对称加密算法SM2。因为我的数学知识有限,对于算法涉及的一些复杂的理论知识,也是不懂,所以本文不会涉及理论,仅仅从编程的角度解读一下SM2。
在进行国密算法开发的这段时间,我主要参考的书籍是《深入浅出HTTPS:从原理到实战》,微信读书上也有电子版,如果你也是进行网络安全方面的开发,建议你读一读。这篇文章中的密码学基础知识也是来自此书。
对计算机安全有点基础知识的人们应该知道,在密码学中,用于数据加密的算法主要有两种:对称加密算法(Symmetric-keyAlgorithms)和非对称加密算法(Asymmetrical Cryptography)。所谓对称加密算法,就是加密密钥和解密密钥相同,这个很好理解,就像我们给房间上锁,锁门的钥匙和开门的钥匙是一样的。而非对称密钥加密算法则是加密密钥和解密密钥不同,这个有点违反普通常理,但确实存在这样的算法,其背后的理论非常复杂。我们不需要懂得多少其背后的理论,也可以采用非对称密码算法做很多安全方面的工作。
在整个密码学体系中,非对称加密算法用途更广,可以用在加密解密、密钥协商、数字签名等方面。所以本文先介绍一下非对称加密算法。
非对称加密算法
非对称加密算法也称作公开密钥算法(Public Key Cryptography),有着一对密钥:公钥(Public Key)和私钥(Private Key)。</