百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python3 RSA加密解密封装(python rsa加密解密 字符串)

off999 2024-09-23 11:34 94 浏览 0 评论

Python3 RSA加密解密封装

1.RSA简介

RSA公开密钥密码体制是一种使用不同的加密密钥与解密密钥,“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制 。

在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公开的。虽然解密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK 。

正是基于这种理论,1978年出现了著名的RSA算法,它通常是先生成一对RSA密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。这就使加密的计算量很大。为减少计算量,在传送信息时,常采用传统加密方法与公开密钥加密方法相结合的方式,即信息采用改进的DES或IDEA对话密钥加密,然后使用RSA密钥加密对话密钥和信息摘要。对方收到信息后,用不同的密钥解密并可核对信息摘要 。

RSA是被研究得最广泛的公钥算法,从提出到现在已近三十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。1983年麻省理工学院在美国为RSA算法申请了专利 。 RSA允许你选择公钥的大小。512位的密钥被视为不安全的;768位的密钥不用担心受到除了国家安全管理(NSA)外的其他事物的危害;1024位的密钥几乎是安全的。RSA在一些主要产品内部都有嵌入,像 Windows、网景 Navigator、 Quicken和 Lotus Notes 。

RSA公开密钥密码体制的原理是:根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

[以上文字摘自百度百科]

2.在Python3环境下对RSA加密解密的封装

在实际软件开发中,我们通常需要对公钥、私钥、明文、密文数据进行保存,在保存时,最方便的方法就是使用字符串,而在RSA加密解密过程中,都是使用字节码来进行处理的,所以我们对其进行封装,采用面向对象的方法进行程序设计,使最终使用者能够通过简单的方法就可以实现对文本的加密和解密。

使用python库rsa

pip install rsa

封装代码如下:

# coding: utf-8
import rsa
import base64


class Rsacrypt:
    def __init__(self):
        self.__pubkey = None
        self.__prikey = None

    # 生成公钥和私钥
    def genKey(self, size):
        self.__pubkey, self.__prikey = rsa.newkeys(size)

    # 获取公钥字符串
    def getPubKey(self):
        pub = self.__pubkey.save_pkcs1()
        return pub.decode('utf-8')

    # 获取私钥字符串
    def getPriKey(self):
        pri = self.__prikey.save_pkcs1()
        return pri.decode('utf-8')

    # 设置公钥
    def setPubKey(self, s_pub):
        self.__pubkey = rsa.PublicKey.load_pkcs1(s_pub.encode('utf-8'))

    # 设置私钥
    def setPrikey(self, s_pri):
        self.__prikey = rsa.PrivateKey.load_pkcs1(s_pri.encode('utf-8'))

    # 公钥加密
    def encrypt(self, text):
        ciphertext = rsa.encrypt(text.encode(), self.__pubkey)
        return base64.b64encode(ciphertext).decode('utf-8')

    # 私钥解密
    def decrypt(self, text):
        decrypt_text = rsa.decrypt(base64.b64decode(text.encode('utf-8')), self.__prikey)
        return decrypt_text.decode()

3.测试

if __name__ == '__main__':
    rsacrypt = Rsacrypt()
    rsacrypt.genKey(1024)

    print(rsacrypt.getPubKey())
    print(rsacrypt.getPriKey())

    text='hello-world'
    m = rsacrypt.encrypt(text)
    print(m)

    n = rsacrypt.decrypt(m)
    print(n)

    m = 'JIT/zVT5E1wOM5bXQTkwW4zjn1ulq4hy4eWvteZnfuUP2EoFGME3vPDwm4Asp/tVFRjiVzx3QH/xr9efjafwow=='
    s_pri = '''-----BEGIN RSA PRIVATE KEY-----
MIIBOAIBAAJAdWnnOffxB6nlsttZk4E65xqz2jwl/ws8LiAnmbvi7No2c4FuFU5S
Y/X+Q3letj1yjEicPF37JAr/KAMRkTctLwIDAQABAkA6LeHPjZY3b+5Ls/ks6Aoh
3c9kwg0p1Y1aZcB5ouoM5l8g0wVMJjH7CcpU6wYXO3k/Wh5FF3lOr0jR+c9lakaR
AiEAvqpa5WNSp/VDTZ5olS1pl7fJCJCd6m2L0ih8XCSRj1UCIQCdpbjcjD3+hV86
M5l1byW99IZoHUlbQWUF6z7dqqCicwIgIiG06+N/5HlPdxGofywF/xbzcgkRe+no
YdLFkGkrdZECICcYm1Du4s0FTImFlHBAQU7rno2hfbjI7gHaxnt4vl+rAiBB71Go
NejfZGk7vEvinzeB/H03lXdsqm3bgyEc7xkTog==
-----END RSA PRIVATE KEY-----'''
    rsacrypt.setPrikey(s_pri)
    n = rsacrypt.decrypt(m)
    print(n)

输出结果:

-----BEGIN RSA PUBLIC KEY-----
MIGJAoGBAIQ5i4cp8arD9zGMWPeJ9NmSk8Xk6OiivWisUNWq1Sh1Shs2LRMbVS89
4VMJMBifJedfbM66eox33MVvM5C9u0/A95QP5FxcUWv2X/rUqs0aTarmx59C/AW5
2fRdSG2YyZPMwOe4/IzK7wLhY8P/kpdwLKk3E6zMDkozFLBy+ZhfAgMBAAE=
-----END RSA PUBLIC KEY-----

-----BEGIN RSA PRIVATE KEY-----
MIICYAIBAAKBgQCEOYuHKfGqw/cxjFj3ifTZkpPF5Ojoor1orFDVqtUodUobNi0T
G1UvPeFTCTAYnyXnX2zOunqMd9zFbzOQvbtPwPeUD+RcXFFr9l/61KrNGk2q5sef
QvwFudn0XUhtmMmTzMDnuPyMyu8C4WPD/5KXcCypNxOszA5KMxSwcvmYXwIDAQAB
AoGAeMVm4Co7hlI/8o3SpSbo8eGj/9k5s2MRxg2+N6s1zyJycbBmM1F/2QqYSJPX
zmVu5YqPg7NoQ+0nRV5v0K8267lyn1Wsw4ysXqQnX0j57VswkSht7bJrYBo8+WH9
xnZmn5qs+j46xuN7LZcKLeySPsAg2T3b5HbP+Q2dERe5RUECRQDqo+/ILrrhgAa4
mbXv6gEPPer3+uCG2cNoRgUUaXox+KBJedwn566JoLHFAdp5w5i4OyMwHR973JKR
gZdYs5pvtruBmQI9AJBC6ebKaU1fDoqjXz4lxju70btQvqNzo4+xoC4cJ81SS3Qa
6e7hIypk2L1t/F/Ha8KQRW70hN/JNVAUtwJEFaOgzXlhysIf3I5wdPvDtUAkl1IP
uuACYW9zsHo5xroDLkOKxjNbqV2kh2KwX2JmhzcM+7bz3FxvN/QXnRqTN5JGoKEC
PCeZlqd5zKome9Fmw1BGAkKHbi0jHxGzPqTFN5kwtWRRQNEgSjL+ri6G/FATjwGj
tlr0S3sHuCnOC8ptxQJFALUAb41pUYJu4Y/MSQMZSXJecW+ddB2MNLh/8TNYjshP
Xc5DNEw652UKgvJBFlyY49zkvVUyjcnr7aZiOCll9uMgd1Na
-----END RSA PRIVATE KEY-----

alP05+VPfspedDF/dvNvVbucHTFsX77XUpWIHsRd792zsY4HohlzR1zY0U4qcLgn05r5oZ9XMFnR8RO4IgC3EF4v9zptC+TUC9laxKRy0ioSOE8CSHNaYQ/5WmbwH+gTJSUtl0AB5nNikKV/qUe0EiZB78doRSdHjitxMaHbLB0=
hello-world
sysadm

4.方法解释

(1).构造函数

Rsacrypt()

(2).genKey(size)

功能:生成公钥和私钥

参数:size - 整数,取值为256|512|1024|2048|4096

(3).getPubKey()

功能:获取实例生成的公钥,返回值类型为字符串

(4).getPriKey()

功能:获取实例生成的私钥,返回值类型为字符串

(5).setPubKey(s_pub)

功能:设置实例的公钥

参数:s_pub - 公钥字符串,类型为字符串类型

(6).setPrikey(s_pri)

功能:设置实例的私钥

参数:s_pri - 私钥字符串,类型为字符串类型

(7).encrypt(text)

功能:对明文进行加密操作

参数:text - 明文,类型为字符串类型

(8).decrypt(text)

功能:对密文进行解密操作

参数:text - 密文,类型为字符串类型



相关推荐

安全教育登录入口平台(安全教育登录入口平台官网)

122交通安全教育怎么登录:122交通网的注册方法是首先登录网址http://www.122.cn/,接着打开网页后,点击右上角的“个人登录”;其次进入邮箱注册,然后进入到注册页面,输入相关信息即可完...

大鱼吃小鱼经典版(大鱼吃小鱼经典版(经典版)官方版)

大鱼吃小鱼小鱼吃虾是于谦跟郭麒麟的《我的棒儿呢?》郭德纲说于思洋郭麒麟作诗的相声,最后郭麒麟做了一首,师傅躺在师母身上大鱼吃小鱼小鱼吃虾虾吃水水落石出师傅压师娘师娘压床床压地地动山摇。...

谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)
哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)

要想将ppt免费转换为pdf的话,我们建议大家可以下一个那个wps,如果你是会员的话,可以注册为会员,这样的话,在wps里面的话,就可以免费将ppt呢转换为pdfpdf之后呢,我们就可以直接使用,不需要去直接不需要去另外保存,为什么格式转...

2026-02-04 09:03 off999

电信宽带测速官网入口(电信宽带测速官网入口app)

这个网站看看http://www.swok.cn/pcindex.jsp1.登录中国电信网上营业厅,宽带光纤,贴心服务,宽带测速2.下载第三方软件,如360等。进行在线测速进行宽带测速时,尽...

植物大战僵尸95版手机下载(植物大战僵尸95 版下载)

1可以在应用商店或者游戏平台上下载植物大战僵尸95版手机游戏。2下载教程:打开应用商店或者游戏平台,搜索“植物大战僵尸95版”,找到游戏后点击下载按钮,等待下载完成即可安装并开始游戏。3注意:确...

免费下载ppt成品的网站(ppt成品免费下载的网站有哪些)

1、Chuangkit(chuangkit.com)直达地址:chuangkit.com2、Woodo幻灯片(woodo.cn)直达链接:woodo.cn3、OfficePlus(officeplu...

2025世界杯赛程表(2025世界杯在哪个国家)

2022年卡塔尔世界杯赛程公布,全部比赛在卡塔尔境内8座球场举行,2022年,决赛阶段球队全部确定。揭幕战于当地时间11月20日19时进行,由东道主卡塔尔对阵厄瓜多尔,决赛于当地时间12月18日...

下载搜狐视频电视剧(搜狐电视剧下载安装)

搜狐视频APP下载好的视频想要导出到手机相册里方法如下1、打开手机搜狐视频软件,进入搜狐视频后我们点击右上角的“查找”,找到自已喜欢的视频。2、在“浏览器页面搜索”窗口中,输入要下载的视频的名称,然后...

pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
永久免费听歌网站(丫丫音乐网)

可以到《我爱音乐网》《好听音乐网》《一听音乐网》《YYMP3音乐网》还可以到《九天音乐网》永久免费听歌软件有酷狗音乐和天猫精灵,以前要跳舞经常要下载舞曲,我从QQ上找不到舞曲下载就从酷狗音乐上找,大多...

音乐格式转换mp3软件(音乐格式转换器免费版)

有两种方法:方法一在手机上操作:1、进入手机中的文件管理。2、在其中选择“音乐”,将显示出手机中的全部音乐。3、点击“全选”,选中所有音乐文件。4、点击屏幕右下方的省略号图标,在弹出菜单中选择“...

电子书txt下载(免费的最全的小说阅读器)

1.Z-library里面收录了近千万本电子书籍,需求量大。2.苦瓜书盘没有广告,不需要账号注册,使用起来非常简单,直接搜索预览下载即可。3.鸠摩搜书整体风格简洁清晰,书籍资源丰富。4.亚马逊图书书籍...

最好免费观看高清电影(播放免费的最好看的电影)

在目前的网上选择中,IMDb(互联网电影数据库)被认为是最全的电影网站之一。这个网站提供了各种类型的电影和电视节目的海量信息,包括剧情介绍、演员表、评价、评论等。其还提供了有关电影制作背后的详细信息,...

孤单枪手2简体中文版(孤单枪手2简体中文版官方下载)

要将《孤胆枪手2》游戏的征兵秘籍切换为中文,您可以按照以下步骤进行操作:首先,打开游戏设置选项,通常可以在游戏主菜单或游戏内部找到。然后,寻找语言选项或界面选项,点击进入。在语言选项中,选择中文作为游...

取消回复欢迎 发表评论: