Python M2Crypto替代PHP

时间:2015-09-28 17:22:12

标签: php python openssl mcrypt

民间,

我正在进行API集成,以便从我的供应商数据库中获取一些数据。但他们有这个Python脚本来进行集成。我只是想从你们那里得到一个帮助我帮助我如何使用PHP

来做同样的事情。
import M2Crypto
import hashlib

payload_template = """<payload><apiVersion>2.0</apiVersion><vendorId>jinna</vendorId><txnId>UTFTVAIAD</txnId><emailId>{encrypted_email_id}</emailId><destination>fetchData</destination><myAmount>100000</myAmount><Duration>24</Duration><Type>Home</Type><returnUrl>https://mydomainname.com</returnUrl></payload>""" email_id = "jinna@mywebsite.com"

读取公钥。这段特殊的代码是读取这些人与我分享的公钥。

public_key = M2Crypto.RSA.load_pub_key('/home/jinna/work/insights-client-keys/clients/mywebsite/public_key')

使用公钥加密email_id并以十六进制(Base16)

编码
encrypted_email_id = public_key.public_encrypt(email_id, M2Crypto.RSA.pkcs1_padding).encode("hex")

创建有效负载。

payload = payload_template.format(encrypted_email_id = encrypted_email_id)

生成有效负载的SHA1并以十六进制(Base16)

编码
digest = hashlib.sha1(payload).hexdigest()

读取私钥。

private_key = M2Crypto.RSA.load_key('/home/jinna/work/insights-client-keys/clients/mywebsite/private_key')

使用私钥加密摘要并以十六进制(Base16)

编码
signature = private_key.private_encrypt(digest, M2Crypto.RSA.pkcs1_padding).encode("hex")

打印有效负载和签名。

print payload, signature

非常感谢您的支持。

0 个答案:

没有答案