OpenSSL
使用C语言编写,是最老牌、使用最广泛的加密库之一,被集成于大多数Linux发行版中,大量网站依赖其提供HTTPS服务。
优点:使用极为广泛,效率和安全性久经考验,即使出现漏洞也可以很快被发现并修补,在不知道用什么的情况下是最稳妥的选择。
缺点:官方文档不够完善,很多API需要查阅相关书籍和博文才知道怎么用。内部代码比较乱。
建议:使用OpenSSL进行编程时,尽量使用更高级的EVP系列API(就是那堆以EVP_开头的函数),这是OpenSSL官方推荐的做法。
Botan
使用C++11编写的加密库。虽然目前使用C++11编写,但实际上其诞生于九十年代,也是比较老牌的加密库。
优点:包含的算法齐全,C++ API用起来很方便,其内部代码不像OpenSSL那样杂乱无章。提供FFI模块,可以用于多种语言,包括C和Python等。
缺点:管道/过滤器机制性能偏低,且未来不太可能改善。文档部分常用API没有示例,使用不便。
建议:C++项目建议使用此库。
————————————————
版权声明:本文为CSDN博主「qmickecs」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qmickecs/article/details/72669595
SHA256WithRSA 原理:
一般应用如下:
发送方:
1. 首先对明文使用接收方的公钥加密,得到密文;
2. 然后对密文先 做SHA256,得到hash值;
3. 然后使用发送方的 私钥进行签名;
接收方:
1. 先使用发送方的公钥进行验签;
2. 然后用接收方的私钥解密。
流程图如下: