python rsa 加解密的 之前都是进行签名,这次是加解密。

虽然逻辑代码都很简单,但是不给明文很伤。我们要做通用平台不给原文,鬼知道这是哪个商户的消息返回。我们来回对接的商户一堆,显然这些抱紧各省。。的大腿公司不会改。加解密来一发
def a(key):
    return '-----BEGIN RSA PRIVATE KEY-----\n' + key + '\n-----END RSA PRIVATE KEY-----\n'

def b(public_key):
    return "-----BEGIN PUBLIC KEY-----\n" + public_key + "\n-----END PUBLIC KEY-----\n"

def rsa_sign(private_text, data):
    from Crypto.PublicKey import RSA
    from Crypto.Hash import SHA
    from Crypto.Signature import PKCS1_v1_5
    from base64 import b64encode, b64decode
    key = RSA.importKey(private_text)
    h = SHA.new(data.encode('utf-8'))
    signer = PKCS1_v1_5.new(key)
    signature = signer.sign(h)
    return b64encode(signature)



def hainan_sign(data):
    # 首先获取密钥
    import os
    base_dir = os.path.dirname(__file__)
    pri_path = os.path.join(base_dir, '4060000001_pri.key')
    f = open(pri_path, 'r').read()
    pri_key = a(f)
    data = data['ddh']+"-"+data['tzrq']+"-"+data['zsdwbm']+"-"+data['bm']+"-"+data['sl']+"-"+data['je']+"-"+data['zje']#这是我们加密规则,你们是怎样就怎么用
    sign = rsa_sign(pri_key, data)
    return str(sign, encoding='utf-8')

from Crypto import Random
random_generator = Random.new().read
def decrypt(sign):
    import os
    base_dir = os.path.dirname(__file__)
    pri_path = os.path.join(base_dir, '4060000001_pri.key')
    f = open(pri_path, 'r').read()
    publickey = b(f)

    from Crypto.PublicKey import RSA
    from Crypto.Cipher import PKCS1_v1_5 as Cipher_pkcs1_v1_5
    # pubKey = open(PUBLIC_KEY, "r").read()
    key = RSA.importKey(publickey)
    # h = SHA.new(data.encode('utf-8'))
    cipher = Cipher_pkcs1_v1_5.new(key)
    import base64
    text = cipher.decrypt(base64.b64decode(sign), random_generator)
    print(text)
    return str(text, encoding='utf-8')
    # sign = b64decode(sign)
    # return verifier.verify(h, sign)
if __name__ == "__main__":
    sign = 'KtJsGgpQtuzB0oYR5uSp6mwhdzC8qY4xqMVoatrpFMaq45nsRiyrY6blTWxXXL3coCfYrk03aIZn\r\nKmIZfMZ/mH++Ta/NvDAY8cqJjo9FWU44mHaoHP9UQIMSThQnyO5Nk0PRH4O/VkyJDeWc3eYw3LaB\r\nO9kL4pe9MnvFT6IwmwA=\r\n'
    decryptedThingy=decrypt(sign)
    list = decryptedThingy.split('-')
    import time
    time_local = time.localtime(int(list[3]))
    #转换成新的时间格式(2016-05-05 20:28:54)
    print(time_local)
    dt = time.strftime("%Y-%m-%d %H:%M:%S",time_local)
    print(dt)


#with open('ghost-private.pem') as f:
#key = f.read()
#rsakey = RSA.importKey(key)
#cipher = Cipher_pkcs1_v1_5.new(rsakey)
#text = cipher.decrypt(base64.b64decode(encrypt_text), random_generator)



猜你喜欢

转载自blog.csdn.net/weixin_42068117/article/details/80195432