如何在django模型/sqlite数据库中存储rsa密钥对

如何在django模型/sqlite数据库中存储rsa密钥对,django,sqlite,pycrypto,Django,Sqlite,Pycrypto,我在Django(Python2.7,Django 1.5m SQLite)中使用PyCrypto,我想创建一个字段来存储RSAkey对象。我该怎么做?转换为字符串并返回似乎非常容易出错,因为其中包含随机字节,我不相信这是一种好方法。 我能够通过base-64编码将随机键存储在charfield中(如下所示:random.new().read(16).encode('base64'))。但是钥匙对呢? 我在Django的当前开发版本中看到,合并了一个二进制字段,但我们需要坚持使用1.5 任何帮助

我在Django(Python2.7,Django 1.5m SQLite)中使用PyCrypto,我想创建一个字段来存储RSAkey对象。我该怎么做?转换为字符串并返回似乎非常容易出错,因为其中包含随机字节,我不相信这是一种好方法。 我能够通过base-64编码将随机键存储在charfield中(如下所示:random.new().read(16).encode('base64'))。但是钥匙对呢? 我在Django的当前开发版本中看到,合并了一个二进制字段,但我们需要坚持使用1.5

任何帮助都将不胜感激

谢谢
Gerd

您只需要存储私钥,因为您总是可以从私钥生成公钥

>>> from Crypto.PublicKey import RSA
>>> RSAkey = RSA.generate(1024)
可以使用导出公钥

>>> RSAkey.publickey().exportKey()
要保存私钥,您可能需要使用
exportKey()
方法将其转换为文本,并将其存储在django文本字段中:

>>> RSAkey.exportKey()
'-----BEGIN RSA PRIVATE KEY-----\nMI...-----END'
将文本转换回RSA密钥对象也很容易:

>>> RSA.importKey('-----BEGIN RSA PRIVATE KEY--- ....')
获取一个RSAobj,就像我最初生成的一样


如果您还打算在其他领域使用该功能,您也可以通过创建自己的模型字段类来尝试“艰难的方法”。见

谢谢!那真的很有帮助!迟早我会努力尝试,因为现在你的解决方案已经足够了:)我们如何将RSA密钥(公共/私有)转换为模块和加密密钥,即N、d、e?你说的“不”是什么意思?@mawimawi我得到了答案。我们可以使用RSAKey.d、RSAKey.e和RSAKey.n来获取它们。数字如下: