Openssl-RSA文档.docxVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Openssl-RSA文档

基于OpenSSL库实现RSA加解密、签名认证RSA简介RSA是一种公钥算法,可以用来实现数字签名,身份认证,以及密钥交换。这里主要讨论数字签名的过程。准备工作OpenSSL的配置:安装,编译OpenSSL文件,生成静态库文件(也可以选择生成动态链接库,下文所使用的均为静态调用)。编译器:Visual C++ 6.0将第(1)步生成的文件加入编译器的目录中主要数据结构以及函数1、RSA数据结构,其中包含公私钥信息,如果只有n和e则表明是公钥。typedefstructrsa_st RSA;structrsa_st {const RSA_METHOD *meth; //OpenSSL默认的RSA加解密算法 ENGINE *engine; BIGNUM *n;//模数n BIGNUM *e;//公钥指数e,通常为RSA_3(3)或RSA_F4(65537) BIGNUM *d;//私钥指数d BIGNUM *p;//大素数p BIGNUM *q;//大素数q BIGNUM *dmp1; BIGNUM *dmq1; BIGNUM *iqmp; CRYPTO_EX_DATA ex_data;int references; };2、BIGNUM:OpenSSL定义的数据类型,用来抽象表示一个大数。3、intRSA_new():生成一个RSA结构,并采用默认的rsa_pkcs1_eay_meth RSA_METHOD算法。成功返回1,失败返回-1。4、intBN_new();生成一个BIGNUM结构,成功返回1,失败返回-1。5、intBN_set_word(BIGNUM *a, BN_ULONG w);将BIGNUM结构的值置为unsigned long int类型整数的值。成功返回1,失败返回-1。6、intRSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb);参数分别为:RSA结构,bits为生成密钥的长度,公开指数e,一般为NULL。作用:根据密钥长度和公钥指数生成密钥。7、RSA_FREE();释放RSA结构。8、intRSA_print_fp(FILE *fp, const RSA *r,int offset);参数分别为;文件指针*fp,RSA结构,打印偏移量。作用:将生成的密钥输出到文件。9、intRSA_check_key(const RSA *);检查RSA结构中n,e,d,p,q是否满足条件。满足返回1,否则返回-1;10、intRSA_size(const RSA *);返回RSA结构中密钥的长度11、加解密函数:intRSA_public_encrypt(intflen, const unsigned char *from,unsigned char *to, RSA *rsa,int padding);intRSA_private_encrypt(intflen, const unsigned char *from,unsigned char *to, RSA *rsa,int padding);intRSA_public_decrypt(intflen, const unsigned char *from, unsigned char *to, RSA *rsa,int padding);intRSA_private_decrypt(intflen, const unsigned char *from, unsigned char *to, RSA *rsa,int padding);flen表示加解密的数据长度;*from为加密前的信息;*to为加密后的信息;*out为解密后的信息;加密时padding表示填充方式,解密时padding表示去除填充的方式;12、签名函数intRSA_sign(int type, const unsigned char *m, unsigned intm_length,unsigned char *sigret, unsigned int *siglen, RSA *rsa);参数:type为摘要数据使用的摘要算法,作用:将需要运算的数据放入X509_ALGOR数据结构并将其DER编码,对编码结果做RSA_PKCS1_PADDING再进行私钥加密。13、验签函数intRSA_verify(int type, const unsigned char *m, unsigned intm_length,const unsigned char *sigbuf

文档评论(0)

qiwqpu54 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档