我在Django中使用PyCrypto(Python 2.7,Django 1.5m SQLite),我想创建一个存储RSAkey对象的字段。我怎样才能做到这一点?转换为字符串并返回似乎很容易出错,因为随机字节在那里,我不相信这是一个好方法。 我能够通过base-64编码将char中的随机密钥存储在charfield中(如下所示:Random.new()。read(16).encode('base64'))。但是一对钥匙? 我在Django的当前开发版本中看到,结合了二进制字段,但我们需要坚持1.5。
真的很感激任何帮助。
由于 格尔德
答案 0 :(得分: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密钥对象也很容易:
>>> RSA.importKey('-----BEGIN RSA PRIVATE KEY--- ....')
获得一个RSAobj,就像我最初生成的一样。
如果您打算在其他区域使用该功能,您也可以通过创建自己的模型字段类来尝试“艰难的方式”。见https://docs.djangoproject.com/en/1.5/howto/custom-model-fields/