RSA
加密算法是一种非对称加密技术,即加密时候用的密钥和解密时用的密钥不是同一把,加密用公钥解密就要用私钥,加密用私钥解密就要用公钥
#
Crypto
安装安装
pycryptodome
pip install pycryptodome # 支持 py2 和 py3
#
python2
和python3
实现RSA
加密# 证书格式不能错
public_key = """-----BEGIN RSA PRIVATE KEY-----
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALLUiZV6DVmAcJGOsWzftnYxDVpIdTlQynYeTtq5Z1ZzUteINPX24GyeetbYjnIT8pq0IdXGEjjBtngvddR0YaMCAwEAAQ==
-----END RSA PRIVATE KEY-----"""
def rsa_encry(msg, public_key):
"""
单次加密串的长度最大为 (key_size/8)-11
1024bit的证书用100, 2048bit的证书用 200
"""
pubobj = PKCS1_v1_5.new(RSA.importKey(public_key))
# python3
res = b""
for i in range(0, len(msg), 100):
res += (pubobj.encrypt(msg.encode()[i:i+100]))
return base64.b64encode(res)
# python2
res = []
for i in range(0, len(msg), 100):
res.append(pubobj.encrypt(msg[i:i+100]))
return base64.b64encode("".join(res))