python 实现私钥加密公钥解密
业界普遍的用法是公钥用来加密,私钥来解密,许多人却不知道也可以用私钥加密,公钥来解密
基础知识
对称加密
非对称加密
公私钥的几个常见格式
使用私钥加密
待编辑
使用公钥解密
参考文档:
python2.7 的实现
from rsa import PublicKey, common, transform, core
# 公钥格式如下,若公钥已经是 RSAPublicKey 格式,则无需将 pub key 转换为 string
PUB_KEY_STRING = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCsKfRext58G0buLDabQQNBVWEB1/B62PapiZ2tSiITw/3X4cI00QB6m7dryMqs7pKntUD3MTGeMCj9zwXX0kmqkrA8og0H0eOHQnAeuw671lkSVYnD1YVcICPv+fbJ1JL+DP3RkXuy0+V2iQC2GDQmfgTcKVowU4c+ToQIp0pUBQIDAQAB'
class DecryptByPublicKey(object):
"""
使用 publib key来解密用primary key加密后生成的base64类型的密文
返回解密后的数据
"""
def __init__(self, encrypt_text):
self.encrypt_text = encrypt_text
@staticmethod
def str2key(s):
# 对字符串解码, 解码成功返回 模数和指数
b_str = base64.b64decode(s)
if len(b_str) < 162:
return False
hex_str = ''
# 按位转换成16进制
for x in b_str:
h = hex(ord(x))[2:]
h = h.rjust(2, '0')
hex_str += h
# 找到模数和指数的开头结束位置
m_start = 29 * 2
e_start = 159 * 2
m_len = 128 * 2