我在 Django(Python 2.7,Django 1.5m SQLite)中使用 PyCrypto,我想创建一个字段来存储 RSAkey 对象。我怎样才能做到这一点?转换为字符串并返回似乎很容易出错,因为随机字节在那里,我不相信这是一个好方法。
我能够通过 base-64 编码将随 secret 钥存储在 charfield 中(例如:Random.new().read(16).encode('base64'))。但是 key 对?
我在当前的 Django 开发版本中看到,合并了一个二进制字段,但我们需要坚持 1.5。
任何帮助将不胜感激。
谢谢
格尔德
最佳答案
您只需要存储私钥,因为您始终可以从私钥生成公钥。
>>> from Crypto.PublicKey import RSA
>>> RSAkey = RSA.generate(1024)
公钥可以导出
>>> RSAkey.publickey().exportKey()
要保存私钥,您可能希望使用
exportKey()
方法将其转换为文本并将其存储在 django-TextField 中:>>> RSAkey.exportKey()
'-----BEGIN RSA PRIVATE KEY-----\nMI...-----END'
将文本转换回 RSA key 对象也很容易:
>>> RSA.importKey('-----BEGIN RSA PRIVATE KEY--- ....')
为您提供一个 RSAobj,就像我最初生成的那样。
如果您也打算在其他领域使用该功能,您也可以通过创建自己的模型字段类来尝试“艰难的方式”。见 https://docs.djangoproject.com/en/1.5/howto/custom-model-fields/
关于django - 如何在 django 模型/sqlite db 中存储 rsa key 对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16216363/