【问题标题】:How can you store a rsa key pair in a django model / sqlite db如何在 django 模型/sqlite db 中存储 rsa 密钥对
【发布时间】:2013-04-25 13:41:10
【问题描述】:

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

任何帮助将不胜感激。

谢谢 格尔德

【问题讨论】:

    标签: django sqlite pycrypto


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢!这真的很有帮助!迟早我将不得不尝试艰难的方式,现在你的解决方案就足够了:)
    • 我们如何将 RSA 密钥(公共/私有)转换为模块和加密密钥,即。 N,d,e ?
    • @noPE 是什么意思?
    • @mawimawi 我得到了答案。我们可以通过 RSAKey.d、RSAkey.e 和 RSAKey.n 来获取它们。数字如下:cs.drexel.edu/~introcs/Fa11/notes/10.1_Cryptography/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    • 2010-11-04
    • 1970-01-01
    • 2011-01-17
    相关资源
    最近更新 更多