python 公钥解密

匿名 (未验证) 提交于 2019-12-02 22:51:30
 import base64 from cryptography.hazmat.backends.openssl.backend import backend from cryptography.hazmat.primitives.serialization import load_pem_public_key from config import conf   # base64解密 def decode_base64(data):     missing_padding = 4 - len(data) % 4     if missing_padding:         data += b'=' * missing_padding     return base64.urlsafe_b64decode(data)   # base64加密 def encode_base64(data):     data = base64.urlsafe_b64encode(data)     return data   # 公钥解密 def openssl_public_decrypt(key, data):     length = backend._lib.EVP_PKEY_size(key._evp_pkey)     buffer = backend._ffi.new('unsigned char[]', length)     backend._lib.RSA_public_decrypt(         len(data),         data,         buffer,         backend._lib.EVP_PKEY_get1_RSA(key._evp_pkey),         backend._lib.RSA_PKCS1_PADDING)     return backend._ffi.buffer(buffer)[:]   # 借点钱 公钥解密 def jdq_public_decrypt(data):     decrypt = ''     # base64解密     data_content = decode_base64(data.encode())     # 计算总长度     totalLen = len(data_content)     # 设置起点     decryptPos = 0     # 载入公钥     pubkey = load_pem_public_key(conf.otherPubKey.encode(), backend)      while decryptPos < totalLen:         # 循环公钥解密         res = openssl_public_decrypt(pubkey, data_content[decryptPos:decryptPos + 128])         # 拼接         decrypt += res.decode()         # 起点+128         decryptPos += 128     return decrypt
文章来源: https://blog.csdn.net/qq_35899407/article/details/91564861
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!