python加密模块教程_Python加密模块 - osc_1dcw7r5z的个人空间 - OSCHINA - 中文开源技术交流社区...

RSA加密

# 生成公钥私钥对象

import rsa

pub_key_obj, priv_key_obj = rsa.newkeys(1024)

'''

这里的1024是二进制位数, 也就是说他加密的内容只有1024/8 = 128个字节, 但是里面又有着11个字节是它必须有的, 所以最长只能加密117个字节

'''

# 获取公钥私钥字符串

pub_key_str = pub_key_obj.save_pkcs1()

priv_key_str = priv_key_obj.save_pkcs1()

# 加密

pk = rsa.PublicKey.load_pkcs1(pub_key_str) # 加载公钥

val = b"haha"

m_val = rsa.encrypt(val,pk) # 这就是加密的结果, 长度就是128(与上面有关)

# 解密

pr = rsa.PrivateKey.load_pkcs1(priv_key_str) # 加载私钥

r_val = rsa.decrypt(m_val, pr)

上面说1024只能加密127个字节, 我们来试一下

pk = rsa.PublicKey.load_pkcs1(pub_key_str) # 加载公钥

val = b"haha" * 30 # 120长度

m_val = rsa.encrypt(val,pk)

'''

OverflowError: 120 bytes needed for message, but there is only space for 117

'''

那如何来加密长字符串呢, 通过循环, 我们可以每次加密117个字节, 最后把得到的内容拼接起来, 解密时相同, 每次解密128字节

# 加密

pk = rsa.PublicKey.load_pkcs1(key_str)

bytes_value = b"haha" * 30

length = len(bytes_value)

val_list = []

for i in range(0, length, 117):

tpl = bytes_value[i:i + 117]

val = rsa.encrypt(tpl, pk)

val_list.append(val)

ret = b''.join(val_list)

# 解密

pk = rsa.PrivateKey.load_pkcs1(key_str)

length = len(ret)

val_list = []

for i in range(0, length, 128):

tpl = ret[i:i + 128]

val = rsa.decrypt(tpl, pk)

val_list.append(val)

ret = b''.join(val_list)

base64加密

import base64

crypt = base64.standard_b64encode(b"haha") # 加密

print(crypt)

decrypt = base64.standard_b64decode(crypt) # 解密

print(decrypt)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值