吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2593|回复: 19
收起左侧

[Python 转载] python之初学RAS库实现:加密,解密,签名,验签

   关闭 [复制链接]
rangersxiaoyan 发表于 2022-7-11 22:20
最近学习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('签名错误')



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


免费评分

参与人数 2吾爱币 +1 热心值 +2 收起 理由
zhangzsf + 1 + 1 谢谢@Thanks!
MichaelWin + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| rangersxiaoyan 发表于 2022-7-12 15:56
醉红尘0 发表于 2022-7-12 09:46
学习的时候可以用中文变量名,但正式环境千万别用,尤其Linux系的系统,别问我咋知道的,曾经修了一个通宵{ ...

win能跑就不上linux。就想3.85过后不支持win7,调试了半天编译了就是报错,最后换成3.85编译就正常了。
 楼主| rangersxiaoyan 发表于 2022-7-11 22:36
平淡最真 发表于 2022-7-11 22:31
变量名用中文看着好难受

弄弄的易语言风格,英文不知道这么取名字,每次取名字都要带翻译。中文变量可以不用写注释。
平淡最真 发表于 2022-7-11 22:31
89684828 发表于 2022-7-11 22:42
感谢楼主分享,支持一下!
vip1639253946 发表于 2022-7-11 23:01
支持一个
慵懒丶L先森 发表于 2022-7-12 00:14
Python居然还可以使用中文的变量名,我还奇怪这代码里怎么有易语言的风格又有Python
amscracker 发表于 2022-7-12 01:54
易语言+py的缝合怪
laoda1228 发表于 2022-7-12 05:56
收藏了, 等把python再深入学习学习再看
lyliucn 发表于 2022-7-12 08:56
PY不会,学习了。
zhcj66 发表于 2022-7-12 09:27
晚上我也要 在加班学习了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-19 17:05

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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