openssl非对称加密rsa算法.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
openssl非对称加密rsa算法

环境配置: 需要的环境 (1) OpenSSL源码 (2) PERL for win32 (3) Vc++ 依赖项:libeay32.lib,ssleay32.lib 用openssl命令制作生成密钥: cd跳转到out32dll目录下 输入生成私钥的命令: openssl genrsa -out private.pem 1024 输入生成对应公钥的命令: openssl rsa -in private.pem -pubout -out public.pem 运行代码 #include stdlib.h #include stdio.h #include string.h #include openssl/pem.h #include openssl/rsa.h /* int RSA_public_encrypt(int flen, const unsigned char *from, unsigned char *to, RSA *rsa,int padding); int RSA_private_encrypt(int flen, const unsigned char *from, unsigned char *to, RSA *rsa,int padding); int RSA_public_decrypt(int flen, const unsigned char *from, unsigned char *to, RSA *rsa,int padding); int RSA_private_decrypt(int flen, const unsigned char *from, unsigned char *to, RSA *rsa,int padding); */ int main() { // 原始明文 char plain[256]=啦啦啦啦啦; // 用来存放密文 char encrypted[1024]; // 用来存放解密后的明文 char decrypted[1024]; // 公钥和私钥文件 const char* pub_key=public.pem; const char* priv_key=private.pem; // 明文输出 printf(%s\n,plain); int len=strlen(plain); // ------------------------------------------------------- // 利用公钥加密明文的过程 // ------------------------------------------------------- // 打开公钥文件 BIO *pBio = BIO_new_file(pub_key,r); if(pBio==NULL){ printf(failed to open pub_key file %s!\n, pub_key); return -1; } // 从文件中读取公钥 RSA* rsa1= PEM_read_bio_RSA_PUBKEY(pBio, NULL, NULL, NULL); if(rsa1==NULL){ printf(unable to read public key!\n); return -1; } BIO_free_all(pBio); //释放设备 // 用公钥加密 //code here int outlen=RSA_public_encrypt(len, (unsigned char *)plain,(unsigned char *)encrypted, rsa1,RSA_PKCS1_PADDING); // 输出加密后的密文 输出到文档txt //code here printf(%d\n,outlen); encrypted[outlen]=\0; printf(%s\n,encrypted); FILE* fp=fopen(out.txt,w); fwrite(encrypted,1,outlen,fp); fclose(fp); // ------------------------------------------------------- // 利用私钥解密密文的过程 // ------------------------------------

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档