问题标签 [python-cryptography]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1007 浏览

python - 在 Python 3.5 中使用密码学进行解密

我正在尝试解密从c_text.

调用时,应打印以下内容:

密钥:b'z7oCVMrxjjgx3n1HFI9oCkyxMnOrXekYKNMEBDKF704='

Cipher text: b'gAAAAABbQxMuhTmZGb0fgR6eRwQO9_qPv0tMI9GVVtyNZbHmDb6YY0veCrvG8uat5m_huC6ZHjI17V-HhLTrUGgdQGlwowY1t24cAq9ybJgfGeQVwWLsR_0=gAAAAABbQxMvgyBwq3hhMbLLP1VMbbboix4qw_TD0nF164TN2QqLGA5iHtX-dpEkj4ALMUY_dhYMqOfXY0ZUqIiX4Z_7Ud-EB8FHN0RsSiaiTBXHOS6_55A=gAAAAABbQxMwm8dek1OLeJp-sE6qmrXQSgbVqi3Sx2JwafW4YpTWuRJosBWJJpBFQ8zp8_rQ5rsLhhs7mQ4XwhGxND1GXmg8RZSrQ9-eclg6L5qyHH5Rch4='

纯文本:服务名称:gmail\n 用户名:gmail\n 密码:gmail\n\n

但是,它只打印纯文本的第一行。怎么了?

编辑:这是我写入文件的代码片段,以及加密功能。

加密功能:

编辑2:经过一些测试,我注意到解密只发生在上面代码中的第一个写入命令(即使加密正常进行)。所以这肯定有问题,尽管我一辈子都想不通......

0 投票
2 回答
655 浏览

cryptography - 对于构建一个高度安全的网站,Ada 能否成为比 Java/Python 更好的选择?

我来自网络和操作系统操作,而不是开发背景。我有一些编写 Python 和 PHP 代码的经验,并在大学学习过软件开发。作为一个爱好项目(目前),我正计划建立一个小型网站,其中将包含一个组件来存储 PII 和敏感信息。我必须优先考虑安全性,其次是性能(主要是加密/解密)。

我的目标是尽可能加密所有内容,并让代码尽可能少(默认情况下)用于利用。该站点将托管在 linux 系统上。

该项目的整个想法是深入学习一门语言(尽可能多地),我觉得如果我选择一些我喜欢的想法,我会更加专注。这个想法涉及处理 PII 和其他敏感信息。而且,如果最终产品结果很好,那么就会打开它,因此在选择编写代码的语言时要做出一个好的选择。

我做了一些阅读,看到有人提到后端 c/c++ 会很好,因为它提供了良好的性能和灵活性,但安全性并不容易。下一个最佳选择是 Ada 2012,因为它提供了比 C/C++ 更高的安全性,并且不会影响性能。Java 也可以提供安全性,但速度可能会稍慢一些。然后是 Python/Ruby。

我认为 Ada 2012 可能是一个不错的选择,但我不想进入一个我在某种程度上学习它的位置,然后意识到我会更好地使用 Python 或 Java 或其他一些语言。

我想从专家那里知道这三个具体问题的答案:

哪种语言最适合开发这个网站,这样:

  • 可以使用最好的加密/解密库吗?
  • 可以利用该语言的特性来编写本质上安全的代码吗?
  • 另外,性能越多越好吗?

请指教。此外,如果有人使用 Ada 进行过网站(特别是那些处理 PII 的)开发,请分享您的经验。

我知道每种语言都有优点和缺点,我查询的目的是从那些作为网站开发人员多年的经验中学习,并使用多种语言和框架来开发处理敏感数据的网站。如果模组认为这个问题会引发一场好与坏的语言战争,我很抱歉,因为这不是本意,我将关闭这个问题。

0 投票
0 回答
169 浏览

python - 如何从 EncryptedKey 对象访问 RSA 加密的 AES 密钥数据?Python

我正在尝试从 EncryptedKey 对象访问关键数据字节。我不清楚这是 PyAsn1 对象还是 Python 对象还是 Python 加密对象。如何访问关键数据?我努力了

我还不确定是否 error:TypeError: initializer for ctype 'unsigned char *' must be a cdata pointer, not EncryptedKey 可能是由于填充问题,因为我不知道 RSA 加密 AES 密钥使用了哪种类型的填充。

此代码导致以下结果:

0 投票
0 回答
179 浏览

python - 导出 X25519PrivateKey 的 private_bytes

Python 的cryptography模块定义了X25519PrivateKeyX25519PublicKey类。但是虽然X25519PublicKeypublic_bytes()序列化的方法,但缺少相应的private_bytes方法。X25519PrivateKey

奇怪的_from_private_bytes()是,出现了一个类方法,暗示了某种导出密钥的方法。

如何导出私钥进行保存?

上下文:我需要这个来noiseprotocol与静态公钥 ( Noise_XX_*) 建立连接,我需要在其中提供预生成和持久化的密钥。

0 投票
1 回答
2667 浏览

python - 如何在 Python Cryptography 中为 ECDSA (secp256k1) 生成较短的私钥

我正在尝试按照本指南学习如何创建比特币地址。如果向下滚动,第一步,即第 0 步,是拥有一个 256 位(64 十六进制)长的 ECDSA 密钥。我研究了 Python Cryptography 并使用下面的代码来测试生成密钥,但保存的密钥始终是一个长(180 个字符)的 base 64 字符串。

我试图阅读文档并查看我在 Github 上调用的函数,但我看不到在哪里可以指定密钥的长度。在这个文件的第 216 行,它说 secp256k1 的密钥大小默认为 256 位。这是否意味着我导出错误?

或者,我考虑过在 secp256k1,( 0x1to 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4140) 范围内生成一个 64 个字符长的随机十六进制字符串,但我看不到在哪里可以从字符串或十六进制值创建私钥实例

测试.py

私钥文件

0 投票
0 回答
390 浏览

python - Flask-ask AttributeError:模块'lib'没有属性'X509V3_EXT_get'

我在 Ngrok 的虚拟环境中使用烧瓶询问。我不断收到 500 个内部服务器错误

我收到以下错误:

我已经尝试降级到旧版本的密码学,但它们不会安装。我得到这个错误。

我已经用 C++ 安装了 Visual Studio,认为这与编译有关,但这也不起作用。

我还更新了 setuptools,安装了 OpenSSL,但似乎没有任何效果。我的理论是 Flask-Ask 不再与密码学版本兼容,但由于编译问题,旧版本的密码学不再可安装。

0 投票
2 回答
129 浏览

python - 支持带有 aumbry 的加密和非加密配置

我们有一个 python 应用程序,它加载config.ymlaumbry。出于生产目的,我们需要使用 fernet 加密此配置,aumbry可以无缝加载。

我们希望能够以透明的方式加载未加密和加密的内容,例如,如果找到则加载未加密,如果没有(生产)加载加密。到目前为止,我们已经实现了这一点。

加密

辅助配置

  • 有没有更优雅的方式来实现这种行为?
0 投票
0 回答
255 浏览

python - 是否可以将 django-cryptography 与 filter 或 get 方法一起使用?

我们正在尝试对 Django 模型中的一些字段进行加密,以便没有人通过数据库访问获取数据(之前我们使用 django.core.signing),但是我们在一些需要根据值进行查询的查询中需要它,但我们是收到此错误

*** django.core.exceptions.FieldError:EncryptedCharField 的不支持查找“精确”或不允许加入该字段。

使用 Django 2.1 和 django-cryptography 0.3

0 投票
1 回答
940 浏览

python - 使用 OpenSSL 和 Python3 签名数据 - 无法验证签名数据

我正在尝试复制以下步骤以在 python3 脚本中使用 OpenSSL 对一些数据进行签名。当我从命令行完成工作时,一切正常。当我将其放入脚本中时,无法识别/验证签名数据。

如何将签名数据转换为可识别的格式?下面我尝试删除'b'(用于字节)和单引号以强制通过,但没有运气。

从命令行执行时,这些步骤可以正常工作:

命令行:

  1. 创建数据文件

    echo -n "This is my data." > data.txt

  2. 签署数据文件

    openssl dgst -sha256 -sign key.pem -keyform PEM -out signature数据.txt

  3. 编码数据文件

    openssl enc -base64 -in signature > sig_base64

*输出:

我的剧本

我的脚本输出

我可以从命令行输出与脚本输出的示例 2 和 3 中看到的唯一区别是命令行中签名数据的格式与我的脚本生成的不同(cli 是一个块,而我的代码产生一行)。

我被困住了。无法弄清楚出了什么问题。有什么想法吗?

0 投票
1 回答
5440 浏览

python - 是否可以为以后的会话保存 fernet 密钥?

我是 python 的新手,我正在开发一个加密文本字符串,然后将其保存到文件的程序。当我在同一个会话中加密然后解密它时,我的程序运行良好。我想做的是:加密文件,然后关闭程序,稍后再回来解密。我不知道密码学模块是如何工作的,但判断它是如何被称为“密钥”的,我认为它对安全性很重要,但我不知道。当我尝试将 fernet 密钥保存到文本文件时,它会显示一条错误消息。当我尝试解密在前一个会话中加密的消息时,它会显示 4 个引用加密模块的错误。最后,我想知道是否可以使用加密模块在会话之间解密数据。如果不,有没有其他方法可以完成这项任务?谢谢你的帮助。这是我的代码:

这是当您从上一个会话中输入“密码”时发生的错误:

这也是当您编辑代码以将密钥保存到空白 .txt 文件时发生的情况。请记住,此错误不反映上面的代码。