django - 如何在 django 模型/sqlite db 中存储 rsa key 对

标签 django sqlite pycrypto

我在 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/

相关文章:

Django 模型验证不起作用

java - 太多的 SQL 变量和 NOT IN 子句

python - 为什么 StringVar().get() 在 python 中返回空值?

android - 已创建数据库但找不到表 Android SQLite

python - 加密 : AES Decryption

javascript - 在Python Gae和客户端之间传递加密数据

django - Django 和 CoffeeScript 到 Heroku 的奇怪部署问题

python - 如何在 Django 元素中使用登陆页面(bootstrap)?

Jquery数据表分页

python - 使用 Pycrypto(python) 的 AES 解密不起作用。在 crypto(Nodejs) 中获取正确的解密代码。