虽然逻辑代码都很简单,但是不给明文很伤。我们要做通用平台不给原文,鬼知道这是哪个商户的消息返回。我们来回对接的商户一堆,显然这些抱紧各省。。的大腿公司不会改。加解密来一发
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)