rsa加密文件 python,python rsa 公钥解密

  rsa加密文件 python,python rsa 公钥解密

  OpenSSL是一个强大的工具包,集成了许多加密算法和实用程序。这意味着您可以使用提供的命令实例工具来生成密钥和证书,加密和解密文件,或者使用提供的API接口来加密代码中的传输信息。

  RSA是一种非对称加密算法。简单来说,非对称加密算法就是加密和解密一个文件需要两个密钥:一个用于加密,一个用于公钥,一个用于解密,一个用于私钥。证书可用于允许使用公钥。

  今天研究的是OpenSSL的RSA加密。主要包括用公钥和密钥解密文件,不涉及证书操作。想集体了解的人可以去:

  请参考。

  首先,介绍了OpenSSL工具在控制台上的简单使用。

  生成密钥:

  openssl genrsa -out测试。密钥1024

  Where -out指定要生成的文件。必须注意,这个文件包含两个部分:公钥和密钥。这意味着这个文件可以用于加密和解密。最后1024是生成的密钥的长度。

  Openssl可以从这个文件中提取公钥。

  OpenSSL RSA-in test . key-pub out-out test _ pub . key

  -in指定输入文件,而-out指定用于提取生成的公钥的文件名。这样,我们就有了公钥和私钥(包括公钥)。现在你可以用公钥加密文件了。

  在目录中创建一个hello文本文件,并用之前生成的公钥对其进行加密。

  opensslrsautl-encrypt-in hello-inkey test _ pub . key-pub in-out hello . en

  -in指定要加密的文件,-inkey指定密钥,-pubin表示使用纯公钥文件加密,-out是加密的文件。

  解密文件:

  opensslrsautl-decrypt-in hello . en-inkey test . key-out hello . de

  -in指定加密文件,-inkey指定私钥文件,-out指定解密文件。

  至此,暂时解密的过程结束。实际上,证书可能包括在内。这是下一次机会~

  请参考。

  本节描述了程序如何利用之前生成的test.key和test_pub.key对信息进行加密和解密,当然你也可以直接使用openssl的API来生成密钥文件。

  下面的示例使用现有密钥加密和解密源字符串。

  1 #包含

  2 #包含3 #包含

  4 #包含

  5 #包含

  6 #包含

  7 #定义OPENSSLKEY test.key

  8 #定义公钥 test _ pub.key 9#定义缓冲区大小1024

  10char*my_encrypt(char*str,char * path _ key);//11 encrypt char * my _ decrypt(char * str,char * path _ key);解密//12输入main (void)

  13 char *source=我喜欢跳舞!;

  14 char *ptr_en,* ptr _ de

  15打印(来源为:% s\n),来源);

  16ptr_en=my_encrypt(source,public key);

  17打印机(加密后:% s (n),ptr _ en);

  18ptr_de=my_decrypt(ptr_en,OPENSSLKEY19打印(解密后:% s\n(,ptr _ de));

  20if(ptr_en!=NULL ) {

  21 free(ptr _ en;

  22 }

  23if(ptr_de!=NULL ) {

  24免费(ptr _ de);

  25 }

  26返回0;

  27 }

  28char*my_encrypt(char*str,char *path_key))

  29 char * p _ en

  30 RSA * p _ rsa

  1个文件*文件

  32 int flen,rsa _ len

  33if () file=fopen(path_key, r ))==NULL))

  34p error(openkeyfileerror);

  35返回null

  36 }

  37if((p _ RSA=PEM _ read _ RSA _ pubkey)file,NULL,NULL ) )==NULL ) {

  38//if (p _ RSA=PEM _ read _ RSA公钥(file,NULL,NULL) )=null)可以用源文件39 err _ prinnnic密钥代替这个生死,也可以用公钥。

  40返回null

  41 }

  42 flen=strlen(str;

  43 RSA _ Len=RSA _ size(p _ RSA;

  44p _ en=(unsignedchar *)malloc)RSA _ len 1);

  45memset(p_en,0,RSA _ len 1);

  46if(RSA _ public _ encrypt)RSA _ len,(unsigned char * ) str,(unsigned char * ) p_en,p_rsa,RSA_no_pppi

  47回空;

  48 }

  49 RSA _ free(p _ RSA);

  50份文件;

  51返回p _ en

  52 }

  53char*my_decrypt(char*str,char *path_key))

  54 char * p _ de

  55 RSA * p _ rsa

  56份文件*

  57 int rsa _ len

  58if () file=fopen(path_key, r ))==NULL))

  59 perror(openkeyfileerror);

  60返回null

  61 }

  62if ((p _ RSA=PEM _ read _ RSA私钥)文件,NULL,NULL){

  63 err _ print _ errors _ FP(stdout;

  64返回空;

  65 }

  66 RSA _ Len=RSA _ size(p _ RSA;

  67p _ de=(unsignedchar *)malloc)RSA _ len 1);

  68memset(p_de,0,RSA _ len 1);

  69if(RSA _ private _ decrypt(RSA _ len,)unsigned char * ) str,)unsigned char * ) p_de,p_rsa,RSA_no_

  70返回空;

  71 }

  72 RSA _ free(p _ RSA);

  73 fclose(文件);

  74返回p _ de

  75 }

  这个问题有点奇怪:

  第37、38行发现,使用心脏出血提供的PEM_read_RSAPublicKey方法从文件中获取密钥会继续失败。

  我觉得是文件形式的问题~

  心脏出血详细介绍:单击此处

  心脏出血下载地址:单击此处

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: