openssl 非对称加密 RSA 加密解密以及签名验证签名
2016-12-02 15:58
471 查看
1. 简介
openssl rsa.h 提供了密码学中公钥加密体系的一些接口,
本文主要讨论利用rsa.h接口开发以下功能
公钥私钥的生成
公钥加密,私钥解密
私钥加密,公钥解密
签名:私钥签名
验证签名:公钥验签
2. 生成公钥私钥对
主要接口,
接口调用需要先生成一个大数,如下生成密钥对示例
打印的密钥对结果:
View Code
6. 总结
上述RSA分组加密中使用了RSA_PKCS1_PADDING 的补位方式;当然还有如下
不同的补位方式,在进行分组加密时,需要注意分组块的处理
测试使用 openssl 1.1.0c
参考:https://www.openssl.org/docs/man1.0.2/crypto/RSA_public_encrypt.html
https://www.openssl.org/docs/manmaster/man3/RSA_verify.html
openssl rsa.h 提供了密码学中公钥加密体系的一些接口,
本文主要讨论利用rsa.h接口开发以下功能
公钥私钥的生成
公钥加密,私钥解密
私钥加密,公钥解密
签名:私钥签名
验证签名:公钥验签
2. 生成公钥私钥对
主要接口,
/* Deprecated version */ DEPRECATEDIN_0_9_8(RSA *RSA_generate_key(int bits, unsigned long e, void (*callback) (int, int, void *), void *cb_arg)) /* New version */ int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb);
接口调用需要先生成一个大数,如下生成密钥对示例
//生成密钥对 RSA *r = RSA_new(); int bits = 512; BIGNUM *e = BN_new(); BN_set_word(e, 65537); RSA_generate_key_ex(r, bits, e, NULL); //打印密钥 RSA_print_fp(stdout, r, 0);
打印的密钥对结果:
test sign and verify sign_verify=1
View Code
6. 总结
上述RSA分组加密中使用了RSA_PKCS1_PADDING 的补位方式;当然还有如下
不同的补位方式,在进行分组加密时,需要注意分组块的处理
# define RSA_PKCS1_PADDING 1 # define RSA_SSLV23_PADDING 2 # define RSA_NO_PADDING 3 # define RSA_PKCS1_OAEP_PADDING 4 # define RSA_X931_PADDING 5 /* EVP_PKEY_ only */ # define RSA_PKCS1_PSS_PADDING 6 # define RSA_PKCS1_PADDING_SIZE 11
测试使用 openssl 1.1.0c
参考:https://www.openssl.org/docs/man1.0.2/crypto/RSA_public_encrypt.html
https://www.openssl.org/docs/manmaster/man3/RSA_verify.html
相关文章推荐
- python 加密 解密 签名 验证签名 公钥 私钥 非对称加密 RSA
- RSA加密解密和签名验证机制以及其区别和联系
- CryptoAPI与openssl RSA非对称加密解密(PKCS1 PADDING)交互
- C#中RSA加密解密和签名与验证的实现
- C#中RSA加密解密和签名与验证的实现
- 跨语言平台的RSA加密、解密、签名、验证算法的实现
- php利用openssl实现RSA非对称加密签名
- C#中RSA加密解密和签名与验证的实现 (转)
- RSA加密解密及RSA签名和验证
- RSA应用之---加密、解密、数据签名、数据签名验证、哈希值签名、哈希值签名验证
- RSA加密解密及RSA签名和验证
- RSA加密解密及RSA签名和验证
- RSA加密与解密、数字签名与验证数字签名
- RSA加密解密及RSA签名和验证
- openssl签名验证、信封加密解密、产生随机数、md5摘要
- openssl签名验证、信封加密解密、产生随机数、md5摘要
- C#中RSA加密解密和签名与验证的实现
- C#中RSA加密解密和签名与验证的实现
- C#中RSA加密解密和签名与验证的实现
- RSA加密解密及RSA签名和验证(转)