如何让django-paypal与pycrypto配合使用?

1 投票
3 回答
900 浏览
提问于 2025-04-15 14:39

我想在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

撰写回答