Loading... 下载地址:http://slproweb.com/products/Win32OpenSSL.html 来源参考: https://blog.csdn.net/zyhse/article/details/108026800 https://gitee.com/bailiyang/cdemo/tree/master/Qt https://gitee.com/bailiyang/cdemo/tree/master/Qt/49OpenSSL/OpenSSL https://blog.csdn.net/Mculover666/article/details/108913245?spm=1001.2014.3001.5502 C:\Users\Administrator\STM32Cube\Repository\STM32Cube_FW_F4_V1.24.2\Projects\STM324xG_EVAL\Applications\mbedTLS\SSL_Client https://www.cnblogs.com/armfly/p/11356396.html https://tls.mbed.org/discussions/generic/mbedtls-and-lwip-raw-api-2 https://tls.mbed.org/discussions/crypto-and-ssl/example-lwip-raw-with-mbedtls-without-rtos 静态内存 https://tls.mbed.org/kb/how-to/using-static-memory-instead-of-the-heap mbedtls 新环境 操作 https://tls.mbed.org/kb/how-to/how-do-i-port-mbed-tls-to-a-new-environment-OS lwip altcp:http://www.nongnu.org/lwip/2_1_x/group__altcp__api.html https://www.cnblogs.com/yangfengwu/p/13555885.html https://www.cnblogs.com/yangfengwu/p/13844529.html https://gitee.com/yang456/LearnW5500/repository/archive/master.zip https://blog.csdn.net/zhanglifu3601881/article/details/91892405 选win64 大的那个安装包 我们选择下载“Win64 OpenSSL v1.1.1i” 对下载的Win64OpenSSL-1_1_1i.exe,进行安装。安装在D:/Program Files/OpenSSL-Win64目录下。 cmd 输入查看版本号 openssl version 对称加密 ---- 对称加密是使用同一个密钥对信息进行加解密 加密过程:明文+密钥a,进行加密,输出密文。 解密过程:密文+密钥a,进行解密,输出明文 非对称加密算法 ------- 即如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密; 如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。 我们常用的用法是:公钥加密,私钥解密。 通常个人保存私钥,公钥是公开的(可能同时多人持有) 数字签名防止信息被篡改 ----------- a发送到b接收 发送 自己的私钥进行签名 a私钥签名 用对方的公钥进行加密 b公钥加密 接收 用自己的私钥进行解密 b私钥解密 用对方的公钥验证签名 a公钥验证签名 私钥记作X 公钥记作Y AX签名 BY加密 BX解密 AY验签 Hash加密算法 -------- 1. 单向算法,密文长度固定,常见的Hash算法:MD2、MD4、MD5、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1、RIPEMD160 2. SHA-1是流行的用于创建数字签名的Hash算法 在Qt工程中调用OpenSSL --------------- 在pro文件中,在win32括号内,添加头文件路径和链接lib如下: win32 { INCLUDEPATH += $$quote(D:/Program Files/OpenSSL-Win64/include) LIBS += -L$$quote(D:/Program Files/OpenSSL-Win64/lib) -llibcrypto } 然后在工程中就可以调用openssl函数了。 运行时,将OpenSSL安装目录D:\Program Files\OpenSSL-Win64\bin下的,libcrypto-1_1-x64.dll 拷贝到,与exe同一目录下。 命令行操作 ----- 使用aes-128-ecb算法对hello.txt加密,128位密钥为8cc72b05705d5c46f412af8cbed55aad,密文为hello.en openssl enc -e -aes-128-ecb -in hello.txt -out hello.en -K 8cc72b05705d5c46f412af8cbed55aad 使用aes-128-ecb算法对hello.en解密,128位密钥为8cc72b05705d5c46f412af8cbed55aad,解密后为hello.de openssl enc -e -aes-128-ecb -in hello.txt -out hello.en -K 8cc72b05705d5c46f412af8cbed55aad openssl enc命令仅适用于OpenSSL中对称加密算法,如AES、DES、Triple-DES。 -e是加密 -d是解密 openssl genrsa -------------- 生成私钥文件private.pem: openssl genrsa -out private.pem 根据私钥private.pem提取出公钥public.pem: openssl rsa -in private.pem -out public.pem -pubout 加密文件(用A的公钥): openssl rsautl -encrypt -in hello.txt -inkey public.pem -pubin -out hello.en 解密文件(用A私钥): openssl rsautl -decrypt -in hello.en -inkey private.pem -out hello.de 签名:指定sha1算法对hello.txt计算文件摘要,并用私钥对摘要签名,生成签名文件sign.txt openssl dgst -sha1 -sign private.pem -out sign.txt hello.txt 验签:指定sha1算法对hello.txt计算文件摘要,并用公钥对签名文件,进行验签。这里是使用RSA公钥验证签名(verify参数),验证成功。 openssl dgst -verify public.pem -sha1 -signature sign.txt hello.txt 大家都知道可以从私钥文件中提取公钥文件,所以验签时,也可以直接用私钥文件来验签。 使用RSA密钥验证签名(prverify参数),验证成功 openssl dgst -prverify private.pem -sha1 -signature sign.txt hello.txt 最后修改:2021 年 03 月 24 日 09 : 40 PM © 允许规范转载 赞赏 请关注我的公众号 ×Close 赞赏作者 扫一扫支付 支付宝支付 微信支付