linux下Openssl-RSA加密解密实例

上传人:新** 文档编号:487011835 上传时间:2023-12-24 格式:DOCX 页数:5 大小:37.66KB
返回 下载 相关 举报
linux下Openssl-RSA加密解密实例_第1页
第1页 / 共5页
linux下Openssl-RSA加密解密实例_第2页
第2页 / 共5页
linux下Openssl-RSA加密解密实例_第3页
第3页 / 共5页
linux下Openssl-RSA加密解密实例_第4页
第4页 / 共5页
linux下Openssl-RSA加密解密实例_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《linux下Openssl-RSA加密解密实例》由会员分享,可在线阅读,更多相关《linux下Openssl-RSA加密解密实例(5页珍藏版)》请在金锄头文库上搜索。

1、1、生成秘钥文件openssl genrsa -out secret.key 1024 openssl genrsa是生成密钥的命令,-out是指定所生成的密钥文件,secret.key这个文件里包含了公钥和密钥两部分,就是说这个文件即可用来加密也可以用来解密,如果想分开也可以用下面的命令将公钥导出。命令中的1024是指生成的密钥的长度。2、将公钥导出openssl rsa -in secret.key -pubout -out secret_pub.key 将公钥从secret.key中导出,-in指定输入文件,-out指定提取生成公钥的文件名。这样我们就有了一个公钥和一个私钥(包含公钥)。

2、下面我们就可以用公钥来加密文件了。3.下面是一个用C实现的OpenSSL RSA加密的程序,程序实现的是公钥加密,私钥解密的过程,当然也可以实现私钥加密,公钥解密,大家可以根据程序后面的函数解释来进行各种更改。 下面将通过第一部分生成的加密文件中的公钥secret_pub.key来实现对字符串的加密,用密钥文件secret.key来实现字符串的解密,程序已经经过编译运行,可以直接实验、运行。 myRSA.h:1 #ifndef _MY_RSA_H_2 #define _MY_RSA_H_34 #include 5 #include 6 #include 7 #include 8 #includ

3、e 9 #include 1011 #define BUFFSIZE 102412 #define PUBLICKEY “secret_pub.key”13 #define OPENSSLKEY “secret.key”1415 char* my_EncryptFunc(char *str,char *path_key); /加密函数16 char* my_DecryptFunc(char *str,char *path_key); /解密函数171819 #endifmyRSA.c:1 #include “myRSA.h”234 int main(void)5 6 char *p_Src =

4、 (char *)”This is my test !”;7 char *p_EnStr,*p_DeStr;89 printf(“Source is : %sn”,p_Src);1011 p_EnStr = my_EncryptFunc(p_Src, PUBLICKEY);12 printf(“Encryption : %sn”,p_EnStr);1314 p_DeStr = my_DecryptFunc(p_EnStr, OPENSSLKEY);15 printf(“Decryption : %sn”,p_DeStr);1617 if(p_EnStr!=NULL)18 19 free(p_E

5、nStr);20 21 if(p_DeStr!=NULL)22 23 free(p_DeStr);24 2526 return 0;27 282930 char *my_EncryptFunc(char *str,char *path_key)31 32 RSA *p_Rsa;33 char *p_En;34 FILE *file;35 int rsa_len;3637 if(file=fopen(path_key,”r”)=NULL)38 39 perror(“open key file error”);40 return NULL;41 424344 #ifndef RSA_NEW4546

6、 if(p_Rsa=PEM_read_RSA_PUBKEY(file,NULL,NULL,NULL)=NULL)47 48 ERR_print_errors_fp(stdout);49 return NULL;50 51 else52 53 printf(“PEM read success!n”);54 5556 #else5758 p_Rsa = RSA_new();59 if(PEM_read_RSA_PUBKEY(file, &p_Rsa, 0, 0) = NULL)60 61 return NULL;62 63 else64 65 printf(“PEM read new succes

7、sn”);66 6768 #endif6970 rsa_len=RSA_size(p_Rsa);7172 p_En = (char *)malloc(rsa_len+1);73 memset(p_En,0,rsa_len+1);7475 if(RSA_public_encrypt(rsa_len, (unsigned char *)str, (unsigned char*)p_En, p_Rsa, RSA_NO_PADDING) 0)76 77 return NULL;78 7980 RSA_free(p_Rsa);81 fclose(file);8283 return p_En;8485 8

8、687 char *my_DecryptFunc(char *str,char *path_key)88 89 RSA *p_Rsa;90 char *p_De;91 FILE *file;92 int rsa_len;9394 if(file=fopen(path_key,”r”)=NULL)95 perror(“open key file error”);96 return NULL;97 9899 if(p_Rsa=PEM_read_RSAPrivateKey(file,NULL,NULL,NULL)=NULL)100 ERR_print_errors_fp(stdout);101 re

9、turn NULL;102 103104 rsa_len=RSA_size(p_Rsa);105 p_De=(char *)malloc(rsa_len+1);106 memset(p_De,0,rsa_len+1);107108 if(RSA_private_decrypt(rsa_len,(unsigned char *)str,(unsigned char*)p_De,p_Rsa,RSA_NO_PADDING)0)109 return NULL;110 111112 RSA_free(p_Rsa);113 fclose(file);114115 return p_De;116 4. li

10、nux下编译gcc myRSA.c -o exe -lssl1)如果出现如openssl/rsa.h : no such file or direction,则需要安装openssl-develsudo yum install openssl-devel 2) 如果出现:undefinedreferencetosymbolRSA_sizelibcrypto.so.10/usr/lib64/libcrypto.so.10:erroraddingsymbols:DSOmissingfromcommandline使用新命令:gcc myRSA.c -o exe -lssl -lcrypto5.运行:./exe6.结果;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 小学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号