如何在django model/sqlite db中存储rsa密钥对

Flu*_*ffy 3 sqlite django pycrypto

我在Django中使用PyCrypto(Python 2.7,Django 1.5m SQLite),我想创建一个存储RSAkey对象的字段.我怎样才能做到这一点?转换为字符串并返回似乎很容易出错,因为随机字节在那里,我不相信这是一个好方法.我能够通过base-64编码将char中的随机密钥存储在charfield中(如下所示:Random.new().read(16).encode('base64')).但是一对钥匙?我在Django的当前开发版本中看到,二进制字段被合并,但我们需要坚持1.5.

真的很感激任何帮助.

谢谢Gerd

maw*_*awi 5

您只需要存储私钥,因为您始终可以从私有密钥生成公钥.

>>> from Crypto.PublicKey import RSA
>>> RSAkey = RSA.generate(1024)
Run Code Online (Sandbox Code Playgroud)

公钥可以导出

>>> RSAkey.publickey().exportKey()
Run Code Online (Sandbox Code Playgroud)

要保存私钥,您可能希望将其转换为包含该exportKey()方法的文本并将其存储在django-TextField中:

>>> RSAkey.exportKey()
'-----BEGIN RSA PRIVATE KEY-----\nMI...-----END'
Run Code Online (Sandbox Code Playgroud)

将文本转换回RSA密钥对象也很容易:

>>> RSA.importKey('-----BEGIN RSA PRIVATE KEY--- ....')
Run Code Online (Sandbox Code Playgroud)

得到一个RSAobj就像我最初生成的一样.

如果您打算在其他区域使用该功能,您也可以通过创建自己的模型字段类来尝试"艰难的方法".请参阅https://docs.djangoproject.com/en/1.5/howto/custom-model-fields/