导航:首页 > 编程语言 > python实现rsa加密

python实现rsa加密

发布时间:2023-03-05 05:57:04

‘壹’ python加密方式: rsa加密和解密

RSA加密是一种非对称加密,通常使用公钥加密,私钥解密。

生成文件如下图:

可以将生成的公钥、私钥粘贴复制存储起来,以便使用:

在使用中, 通常会先对数据进行bas64加密, 再对加密后的内容使用rsa加密, 最后对rsa解密后的内容进行bas64解密.

‘贰’ Python简单加密操作

加密是将一个明文数据,按照指定的算法,运算得到一个其他的可以隐藏真实信息的密文数据,这个过程称为加密;处理的算法称为加密算法;用到的关键数据称为密钥。

解密是按照制定的算法和关键数据,将一个密文数据进行逆向运算得到的正确的明文数据的过程

如:用户账号密码存储,此时任何人都不能查看该用户的明文密码

1.原始数据
2.编码(转换为字节数据)
3.使用算法加密
4.利用盐值更新密文
5.得到加密后的数据

编码:字符串.encode(编码名称)——>字节数据
解码:字节数据.decode(编码名称)——>字符串数据

==========================================

‘叁’ 你好,我刚接触Python,要做一个RSA密码加密,是这样的

注意下编码,看两端使用的编码是否一致

‘肆’ python rsa模块---生成公钥和私钥的方法

https://blog.csdn.net/six66hao/article/details/81814576
https://blog.csdn.net/whatday/article/details/97617461
https://blog.csdn.net/xiongzaiabc/article/details/88400748
https://blog.csdn.net/zhao3587717/article/details/83111082/

一.
非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)
对称加密算法大家共用一个密钥

数字签名: 就是为了证明该信件是确定的人发出的,而不是黑客冒充发出的
eg:
1.鲍勃给苏珊回信,决定采用"数字签名"。他写完后先用Hash函数,生成信件的摘要(digest)。

二.用RSA库可以生成公钥和私钥
到时候把公钥给前端,后端保存公钥和私钥

三.在用户注册/登入时,输入密码后前端会用JS对密码进行加密传送到后端
一般现在对于密码的加密解密都用RSA进行

‘伍’ 如何用python实现rsa算法加密字符串

你可以使用rsa这个python库:
>>> (bob_pub, bob_priv) = rsa.newkeys(512)
>>> message = 'hello Bob!'
>>> crypto = rsa.encrypt(message, bob_pub)
>>> message = rsa.decrypt(crypto, bob_priv)
>>> print message
hello Bob!

文档地址:http://stuvel.eu/files/python-rsa-doc/usage.html#generating-keys

如果解决了您的问题请采纳!
如果未解决请继续追问

‘陆’ “青锋爱分享”Springboot+Python之RSA加解密方案(RSA深入)二

本篇文章要结合上一节文章一起看。

青锋爱分享-RSA-Springboot+Python整合

码云搜索: 青锋 会有惊喜哦哦。

通过python生成的公钥私钥 格式PKCS1 。

生成pem格式如下:

私钥头(-----BEGIN RSA PRIVATE KEY-----)

私钥尾(-----END RSA PRIVATE KEY-----)

我需要将此私钥转换为DER编码的PKCS8未加密格式,以便与java服务器代码一起使用,特别是PKCS8EncodedKeySpec。我已经试过使用rsa和pkcs8命令的OpenSSL,如果有更简单的办法,没有特别需要使用openssl。

RSA私钥格式PKCS1和PKCS8相互转换

RSA公钥格式PKCS1和PKCS8相互转换

以下转换基于openssl命令的操作;

执行:openssl genrsa -out private.pem 1024

-----BEGIN RSA PRIVATE KEY-----

MIICXQIBAAKBgQDlLm5++/wwSfq5KfY

H8q1AO/

Uo4OMcmoSz3IAp/7//ewIDAQAB

AoGBAJkMdvF+i9Kzc6YqMC0rfQJ3Zs+vFOtsbmQVAMnQ8JWBCJ1O8d/c60wRQgyb

lFCyO7VXOmoIJqX/Jr2aER8bFtG+

lOdOay7TkE45X/Wc7K9iZs2uuB7sylIvK/HVxxit6FGePa4RAkEA9e+VoAbxBv78

HyxRcStW+

n0UxgT55MPXWGdMRXUUOCNnMilaw/

HvK0IW3zpOgf/+/W565ROI/fjkR1qCD

rZJeHgqMWDlIUuR9+BdBAkAI8+

puQxMonRWTN+

-----END RSA PRIVATE KEY-----


执行:openssl pkcs8 -topk8 -inform PEM -in private.pem -outform pem -nocrypt -out pkcs8.pem


-----BEGIN PRIVATE KEY-----

+n

yHOOfV+XbBPsC7aWblIS3Pqv7/DBJ+/T

uaDSVA4K8Tmx22YC8PZ7HfAJ5/yVaaB2HmpSjg4xyahLPcgCn/v8WcxqDUh6VJ92

/

Q3fic/

+

nt0qVQJAOmMZ67caK+YHZ0M3Rp3adQgF+

//6OHlRQIElgect4wb

CbtfXWu9AfXNbTlXH39bnrlE4j9+

Yt1Zx5df0+

HLU0VEwSQa7rvmY=

-----END PRIVATE KEY-----


执行:openssl rsa -in pkcs8.pem -out pkcs1.pem


-----BEGIN RSA PRIVATE KEY-----

MIICXQIBAAKBgQDlLm5++/wwSfq5KfY

H8q1AO/

Uo4OMcmoSz3IAp/7//ewIDAQAB

AoGBAJkMdvF+i9Kzc6YqMC0rfQJ3Zs+vFOtsbmQVAMnQ8JWBCJ1O8d/c60wRQgyb

lFCyO7VXOmoIJqX/Jr2aER8bFtG+

lOdOay7TkE45X/Wc7K9iZs2uuB7sylIvK/HVxxit6FGePa4RAkEA9e+VoAbxBv78

HyxRcStW+

n0UxgT55MPXWGdMRXUUOCNnMilaw/

HvK0IW3zpOgf/+/W565ROI/fjkR1qCD

rZJeHgqMWDlIUuR9+BdBAkAI8+

puQxMonRWTN+

-----END RSA PRIVATE KEY-----


可以看出结果和1是一致的;

执行:openssl rsa -in private.pem -pubout -out public.pem


-----BEGIN PUBLIC KEY-----

+Kosybacfp8hzjn1fl2wT

7Au2lm5SEtz6r+/wwSfq5KfYH8q1AO/

/7/FnMag1IelSfdronPBDxazp6

NUmQZITsYK6CsEl/ewIDAQAB

-----END PUBLIC KEY-----


5. 从pkcs8私钥中生成pkcs8公钥
执行:openssl rsa -in pkcs8.pem -pubout -out public_pkcs8.pem


-----BEGIN PUBLIC KEY-----

+Kosybacfp8hzjn1fl2wT

7Au2lm5SEtz6r+/wwSfq5KfYH8q1AO/

/7/FnMag1IelSfdronPBDxazp6

NUmQZITsYK6CsEl/ewIDAQAB

-----END PUBLIC KEY-----


可以看出结果和4是一样的;

执行:openssl rsa -pubin -in public.pem -RSAPublicKey_out


-----BEGIN RSA PUBLIC KEY-----

MIGJAoGBAOUubn4qizJtpx+nyHOOfV+XbBPsC7aWblIS3Pqv7/DBJ+rkp9gfyrUA

78L3YjASmmU1uupiY5dC7o/TuaDSVA4K8Tmx22YC8PZ7HfAJ5/yVaaB2HmpSjg4x

yahLPcgCn/=

-----END RSA PUBLIC KEY-----



openssl rsa -pubin -in public_pkcs8.pem -RSAPublicKey_out


-----BEGIN RSA PUBLIC KEY-----

MIGJAoGBAOUubn4qizJtpx+nyHOOfV+XbBPsC7aWblIS3Pqv7/DBJ+rkp9gfyrUA

78L3YjASmmU1uupiY5dC7o/TuaDSVA4K8Tmx22YC8PZ7HfAJ5/yVaaB2HmpSjg4x

yahLPcgCn/=

-----END RSA PUBLIC KEY-----


可以看出转换的结果是一致的;

执行:openssl rsa -RSAPublicKey_in -in pub_pkcs1.pem -pubout


-----BEGIN PUBLIC KEY-----

+Kosybacfp8hzjn1fl2wT

7Au2lm5SEtz6r+/wwSfq5KfYH8q1AO/

/7/FnMag1IelSfdronPBDxazp6

NUmQZITsYK6CsEl/ewIDAQAB

-----END PUBLIC KEY-----


可以看到和上面4,5的结果是一致的;

最后一点:
iOS上用的是pkcs8格式的公钥
openssl用的是pkcs1格式的公钥
知道私钥以后是可以导出公钥的,所以私钥一定要保证安全
知道公钥不可以导出私钥


解决方案针对是window电脑。

配置:SystemRoot/ System32 环境变量。

1、邮件我的电脑-选择下【属性】。

2、选择高级系统设置

3、选择【高级】-【环境变量】

4、双击打开path,进行编辑

5、 接着我们在这名字后面加【;System32】就可以了。

安装 Win64 OpenSSL,地址: http://slproweb.com/procts/Win32OpenSSL.html

下载后根据提示一步一步安装,安装完成后:

双击start.bat 启动

‘柒’ python如何实现rsa加密的示例代码分享

import rsakey = rsa.newkeys(3000)#生成随机秘钥privateKey = key[1]#私钥publicKey = key[0]#公钥message ='sanxi Now is better than never.'print('Before encrypted:',message)message = message.encode()cryptedMessage = rsa.encrypt(message, publicKey)print('After encrypted:\n',cryptedMessage)message = rsa.decrypt(cryptedMessage, privateKey)message = message.decode()print('After decrypted:',message)

‘捌’ python文本加密是什么

python文本加密是Python 提供了诸如 hashlib,base64 等便于使用的加密库,我们可以借助异或操作,实现一个简单的文件加密程序。

通过了解异或操作的性质,加密原理就非常清晰了。

首先将文件转换成二进制数,再生成与该二进制数等长的随机密钥,将二进制数与密钥进行异或操作,得到加密后的二进制数。

将加密后的二进制程序与密钥进行异或操作,就得到原二进制数,最后将原二进制数恢复成文本文件。

相关拓展

加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。

加密之所以安全,绝非因不知道加密解密算法方法,而是加密的密钥是绝对的隐藏,流行的RSA和AES加密算法都是完全公开的,一方取得已加密的数据,就算知道加密算法也好,若没有加密的密钥,也不能打开被加密保护的信息。

单单隐蔽加密算法以保护信息,在学界和业界已有相当讨论,一般认为是不够安全的。公开的加密算法是给黑客和加密家长年累月攻击测试,对比隐蔽的加密算法要安全得多。

尽管加密或为了安全目的对信息解码这个概念十分简单,但在这里仍需对其进行解释。数据加密的基本过程包括对称为明文的原来可读信息进行翻译,译成称为密文或密码的代码形式。该过程的逆过程为解密,即将该编码信息转化为其原来的形式的过程。

以上内容参考 网络-加密

‘玖’ 如何用python实现rsa算法加密字符串

importrsa
rsaPublickey=int(pubkey,16)
key=rsa.PublicKey(rsaPublickey,65537)#创建公钥
message=str(servertime)+' '+str(nonce)+' '+str(password)#拼接明文js加密文件中得到
passwd=rsa.encrypt(message,key)#加密
passwd=binascii.b2a_hex(passwd)#将加密信息转换为16进制。
returnpasswd

阅读全文

与python实现rsa加密相关的资料

热点内容
义隆单片机视频教程 浏览:383
cad安装卡在解压 浏览:615
编程精灵g540 浏览:256
手机文档解压之后解压包去哪儿了 浏览:923
java中网络编程重要吗 浏览:683
如何登录别人的服务器 浏览:626
调度系统软件python 浏览:205
微信大转盘抽奖源码 浏览:497
压缩机损坏的表现 浏览:862
同步数据服务器怎么用 浏览:634
163邮箱服务器的ip地址 浏览:50
服务器跟域是什么 浏览:128
rails启动命令 浏览:465
logistic命令怎么用 浏览:738
c语言点滴pdf 浏览:747
linuxrtc编程 浏览:258
linux打包并压缩命令 浏览:644
aes加密的证书格式 浏览:99
oracledbcalinux 浏览:844
酬勤任务app怎么被特邀 浏览:199