Python怎样基于rsa模块实现非对称加密与解密

  介绍

这篇文章将为大家详细讲解有关Python怎样基于rsa模块实现非对称加密与解密,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

1,简单介绍:

rsa加密算法是一种非对称加密算法是由已知加密密钥推导出解密密钥在计算上是不可行的“密码体制。加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。

rsa密钥至少为500位长,一般推荐使用1024位.RSA密钥长度随着保密级别提高,增加很快。

由于rsa的特性,一个1024位的密钥只能加密117位字节数据,当数据量超过117位字节的时候,程序就会抛出异常。——来自大佬

2代码实现:

来一段大佬的代码:

import  rsa         #,一,生成公钥及私钥,,并保存   public_key, private_key =, rsa.newkeys(1024), #,生成公钥和私钥   #,将生成的公钥和私钥进行转换,以便存储   时间=pub  public_key.save_pkcs1 ()   时间=pri  private_key.save_pkcs1 (& # 39; pem # 39;), #, save_pkcsl()是内置方法,其默认参数是“pem # 39;   with 开放(& # 39;pubkey.pem& # 39;,,模式=& # 39;wb # 39;), as  f,开放(& # 39;privkey.pem& # 39;,,模式=& # 39;wb # 39;), as  f1:   f.write才能(酒吧),#,打开两个文件,分别存储公钥及私钥   f1.write才能(pri)         #,二只使用公钥加密,,私钥解密   def  func ():   with 才能打开(& # 39;pubkey.pem& # 39;,,模式=& # 39;rb # 39;), as  f,开放(& # 39;privkey.pem& # 39;,, & # 39; rb # 39;), as  f1:   ,,,pub =, f.read(), #,从文件中再读出公钥和私钥   ,,,pri =, f1.read ()   ,,,public_key =, rsa.PublicKey.load_pkcs1(酒吧),#,转换为原始状态   ,,,private_key =, rsa.PrivateKey.load_pkcs1 (pri)   message =,才能“rsa加密测试,   info 才能=,rsa.encrypt (message.encode (& # 39; utf - 8 # 39;),, public_key), #,使用公钥加密内容,内容必须是二进制   时间=msg 才能;rsa.decrypt(信息,,private_key), #,使用私钥解密,获得解密后的内容   打印才能(msg.decode (& # 39; utf - 8 # 39;)), #,使用之前记得先解码

3代码升级:

现在我将上述的代码段封装成一个Rsa类(包含的方法有:__init__——初始化方法,key_transform_store——存储公钥与私钥的方法,encry——加密方法,谴责——解密方法),使用的时候,直接将下面的代码段拎到我们需要的地方去引用:先创建一Rsa对象,然后调用里面的方法即可:

import  Rsa         class  Rsa(对象):   “““才能RSA加密,解密“““      def 才能;__init__(自我,,,,pub_path=& # 39; public_key.pem& # 39;,, priv_path=& # 39; private_key.pem& # 39;):   ,,,,,,      ,,,:param  pub_path:,, path 用public 关键,,default  its  path  is  public_key.pem   ,,,:param  priv_path:,, path 用private 关键,,default  its  path  is  private_key.pem   ,,,,,,   ,,,#,Generate 从而public 以及private 密钥,以及returns 他们   ,,,,,,self.public_key self.private_key =, rsa.newkeys(数量)      ,,,self.public_key_path =pub_path   ,,,self.private_key_path =priv_path      def 才能key_transform_store(自我):   ,,,,,,   ,,,convert 以及节省;从而generated  public 以及private  keys 用a 文件   ,,,:返回:没有   ,,,,,,   ,,,#,convert 从而generated  public 以及private  keys  for 存储   ,,,pub =, self.public_key.save_pkcs1 ()   ,,,pri =, self.private_key.save_pkcs1 (& # 39; pem # 39;)      ,,,#,open  two  files 用store 从而public  key 以及private  key 分别   ,,,,   ,,,with 开放(self.public_key_path,,模式=& # 39;wb # 39;), as  f:   ,,,,,f.write(酒吧)      ,,,with 开放(self.private_key_path,,模式=& # 39;wb # 39;), as  f1:   ,,,,,f1.write (pri)      def 才能encry(自我,,信息):   ,,,,,,   ,,,encrypt 信息   ,,,:param 信息:,,original  string 方式;用be 加密   ,,,:返回:info_encrypted   ,,,,,,   ,,,#,read 从而public  key 得到,文件   ,,,with 开放(self.public_key_path,,模式=& # 39;rb # 39;), as  f:   ,,,,,pub =, f.read ()   ,,,,,#,convert  pub 用original 状态   ,,,,,public_key =, rsa.PublicKey.load_pkcs1(酒吧)      ,,,#,use 从而public  key 用encrypt 从而内容,which  must  be 二进制   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

Python怎样基于rsa模块实现非对称加密与解密