如何让django-paypal与pycrypto配合使用?
我想在django-paypal中使用按钮加密,但它需要M2Crypto,而这个在webfaction服务器上无法安装。Webfaction的技术支持告诉我,系统上已经安装了pycrypto,但我不知道怎么把M2Crypto的代码转换成pycrypto的代码。
有没有人能告诉我怎么把下面的代码转换成可以用pycrypto的版本(如果可能的话)?这只是一个小片段,展示了加密的部分,如果需要的话我可以发整个函数。
s = SMIME.SMIME()
s.load_key_bio(BIO.openfile(CERT), BIO.openfile(PUB_CERT))
p7 = s.sign(BIO.MemoryBuffer(plaintext), flags=SMIME.PKCS7_BINARY)
x509 = X509.load_cert_bio(BIO.openfile(settings.PAYPAL_CERT))
sk = X509.X509_Stack()
sk.push(x509)
s.set_x509_stack(sk)
s.set_cipher(SMIME.Cipher('des_ede3_cbc'))
tmp = BIO.MemoryBuffer()
p7.write_der(tmp)
p7 = s.encrypt(tmp, flags=SMIME.PKCS7_BINARY)
out = BIO.MemoryBuffer()
p7.write(out)
return out.read()
3 个回答
0
你可以在自己的电脑上设置一个虚拟机,尽量复制出webfaction服务器的环境,这样就能自己搭建了。然后把搭建好的内容上传到你的python路径中的某个地方。
1
pycrypto这个库功能不太完整。它不支持你需要的那些填充方案和格式。要添加对这些格式的支持并不是一件简单的事,需要花费很多时间。
2
我成功地让它编译通过了。下面是你需要做的所有步骤:
cat >> ~/.pydistutils.cfg << EOF
[build_ext]
include_dirs=/usr/include/openssl
EOF
easy_install-2.5 --install-dir=$HOME/lib/python2.5 --script-dir=$HOME/bin m2crypto