找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 文档 工具 设计
查看: 119|回复: 0

python之初学RAS库实现:加密,解密,签名,验签

[复制链接]

2万

主题

1249

回帖

2万

积分

超级版主

教育辅助界扛把子

附加身份标识
精华
1
热心
7
听众
1
威望
48
贡献
14307
违规
0
书币
49981
注册时间
2020-4-8

论坛元老灌水之王

发表于 2022-9-30 00:35 | 显示全部楼层 |阅读模式
最近学习RSA非对称加密,找了很多资料。发一下学习成果

RSA实例1.1生产秘钥.py

[Python] 纯文本查看 复制代码
import rsa

import time

 

v_秘钥强度 = 128

v_开始时间 = time.time()

(v_公钥, v_私钥) = rsa.newkeys(v_秘钥强度 * 8)

print('耗时:', time.time() - v_开始时间)

with open('公钥.pem', 'w+') as f:

    f.write(v_公钥.save_pkcs1().decode())

with open('私钥.pem', 'w+') as f:

    f.write(v_私钥.save_pkcs1().decode())



RSA实例1.2公钥加密信息.py

[Python] 纯文本查看 复制代码
import rsa

 

with open('公钥.pem', 'r') as f:

    v_公钥 = rsa.PublicKey.load_pkcs1(f.read().encode())

 

v_需要加密的数据 = input('输入要加密的内容:')

print(f'需要加密的原始内容:{v_需要加密的数据}')

 

# 公钥加密

v_密文 = rsa.encrypt(v_需要加密的数据.encode(), v_公钥)

 

print(f'加密后的密文:{v_密文}')

 

# 保存密文

with open('密文.b', mode='wb') as f:

    f.write(v_密文)



RSA实例1.3私钥解密信息.py


[Python] 纯文本查看 复制代码
import rsa

 

# 读取私钥

with open(file='私钥.pem', mode='r') as f:

    v_私钥 = rsa.PrivateKey.load_pkcs1(f.read().encode())

 

# 读取密文

with open(file='密文.b', mode='rb') as f:

    v_密文 = f.read()

 

# 解密明文

v_解密明文 = rsa.decrypt(v_密文, v_私钥).decode()

print(f'解密后的明文:{v_解密明文}')



RSA实例1.4私钥签名信息.py

[Python] 纯文本查看 复制代码
import rsa

 

# 读取私钥

with open(file='私钥.pem', mode='r') as f:

    v_私钥 = rsa.PrivateKey.load_pkcs1(f.read().encode())

 

v_需要签名的信息 = input('输入要签名的消息:')

v_签名数据 = rsa.sign(v_需要签名的信息.encode(), v_私钥, 'SHA-1')

 

with open(file='签名内容.txt', mode='w+') as f:

    f.write(v_需要签名的信息)

 

with open(file='签名.b', mode='wb') as f:

    f.write(v_签名数据)

 

print(f'私钥签名数据:{v_签名数据}')




RSA实例1.5公钥验证签名.py

[Python] 纯文本查看 复制代码
import rsa

 

with open('公钥.pem', 'r') as f:

    v_公钥 = rsa.PublicKey.load_pkcs1(f.read().encode())

 

with open(file='签名内容.txt', mode='r') as f:

    v_签名数据 = f.read()

 

with open(file='签名.b', mode='rb') as f:

    v_签名 = f.read()

 

print(v_签名数据)

try:

    xx = rsa.verify(v_签名数据.encode(), v_签名, v_公钥)

    if xx=='SHA-1':

        print('签名正确')

except BaseException as e:

    print('签名错误')




简单的实现了加密,解密,签名,验签。然后就可以做很多事情了。

Great works are not done by strength, but by persistence! 历尽艰辛的飞升者,成了围剿孙悟空的十万天兵之一。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号


免责声明:
本站所发布的第三方软件及资源(包括但不仅限于文字/图片/音频/视频等仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢某程序或某个资源,请支持正版软件及版权方利益,注册或购买,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To: admin@cdsy.xyz

QQ|Archiver|手机版|小黑屋|城东书院 ( 湘ICP备19021508号-1|湘公网安备 43102202000103号 )

GMT+8, 2024-11-21 20:31 , Processed in 0.035974 second(s), 27 queries .

Powered by Discuz! CDSY.XYZ

Copyright © 2019-2023, Tencent Cloud.

快速回复 返回顶部 返回列表