Riz*_*sim 3 c python encryption openssl
我需要访问OpenSSL的加密函数来编码CBC流中的Blowfish数据.我用Google搜索并找到了一些Blowfish库(手写)和一些OpenSSL包装器(似乎没有一个完整的.)
最后,我需要访问某些OpenSSL函数,例如完整的blowfish.h 命令库.什么是pythonic /正确的访问方式?使用类似SWIG的东西来允许Python/C绑定,还是有更好的方法?
谢谢!
有很多方法可以在Python中与C(和C++)进行交互.ctypes非常适合快速的小扩展,但它有将编译时错误转换为运行时段错误的习惯.如果你想编写自己的扩展,SIP非常好.SWIG很一般,但有更多的追随者.当然,你应该做的第一件事就是看你是否真的需要接口.你看过PyCrypto了吗?
我很喜欢用于河豚的M2Crypto(一个OpenSSL包装器).
import M2Crypto
from M2Crypto import EVP
import base64
import struct
key = '0' * 16 # security FTW
iv = '' # initialization vector FTW
dummy_block = ' ' * 8
encrypt = EVP.Cipher('bf_cbc', key, iv, M2Crypto.encrypt)
decrypt = EVP.Cipher('bf_cbc', key, iv, M2Crypto.decrypt)
binary = struct.pack(">Q", 42)
ciphertext = encrypt.update(binary)
decrypt.update(ciphertext) # output is delayed by one block
i = struct.unpack(">Q", decrypt.update(dummy_block))
print i
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1173 次 |
| 最近记录: |