问题标签 [fernet]

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 投票
0 回答
94 浏览

python - 使用 Python 加密表中的列

我用这段代码加密了conversationID的列,它是表中的一列,问题是它加密了所有的值,即使是相同的ID。我正在寻找一种只能加密不同值的解决方案,我的意思是,对于相同的会话 ID,它应该返回相同的加密值,它不应该不同。这是使用的代码:

0 投票
0 回答
313 浏览

python - py2exe 缺少模块(_posixshmem、bcrypt、readline、资源)

我正在为我的学士论文开发一个简单的勒索软件脚本,以了解不同的防火墙制造商如何解决威胁保护/预防。我使用 cryptography.fernet 编写了一个简单的 python 脚本来生成密钥并加密一些示例文件。要在尚未安装 python 的测试机器上运行我的脚本,我需要构建一个 .exe 并执行它。我尝试了不同的模块,例如 pyinstaller,但 Windows Defender 立即触发了警报。但是我设法使用 py2exe 解决了这个问题。我已经创建了 python 脚本并且一切正常,直到我构建 .exe 文件。

执行以下命令时收到 4 个错误:python setup.py py2exe

由于某种原因,.exe 文件将在dist文件夹中构建,但当我开始执行文件时无法正常工作。控制台出现一毫秒然后消失。示例文件仍然可读。我试图注释掉几乎所有内容,但我仍然遇到同样的问题。我认为上面使用的一些模块与py2exe不兼容...

我的setup.py是:

我使用命令提示符启动 .exe 并收到以下错误:

我正在使用Python 3.9.4

感谢您的时间。

0 投票
0 回答
90 浏览

python - 解密现有盐时出现cryptography.fernet.InvalidToken错误

前言:

我确实搜索了 StackOverflow,我知道有人有像我这样的问题,但现在(第一次看到它几个月后),我再也找不到那个答案了。我完全知道可能存在重复,但对于我的一生,我无法在搜索中找到它。

问题:

我有一个加密模块,它生成一个散列密码,用于加密和解密存储在 TinyDB 数据库中的秘密。除了解密秘密外,所有功能都有效。密码验证正确,所以我知道这不是问题。我几乎肯定我的问题是在解密函数中正确编码盐。

加密代码:

解密:

我尝试了什么:

我已经尝试过复制盐加密的不同变体,但不断出错。部分问题是base64.encode需要两个“文件对象”用于输入和输出,并且不接受字符串变量,这使得它无法满足我的需要。

我可以通过创建一个临时文件来解决这个问题,但这将是最糟糕的解决方案,因为它涉及

  1. 在文件系统中使用部分解密的信息在 RAM 和数据库之外创建一个新文件,从而削弱整个系统的安全性
  2. 创建一个新的临时文件,这只是浪费系统资源
  3. 添加更多代码只是为了实现一些我很肯定的东西,可以用一两个词以不同的方式实现。

尽管知道还有另一种解决方案,但我无法弄清楚,并且不知道哪个 base64 或 bytes 函数将完成这项工作。

0 投票
1 回答
359 浏览

python - 使用 NodeJS 的加密与使用 Python (cryptography.fernet) 的加密不匹配

密码学菜鸟在这里。我正在尝试在 NodeJS 中编写一个脚本来加密一个字符串并生成与我使用 cryptography.fernet 库的 Python 脚本的输出相匹配的输出。我的总体目标是使用原始密钥加密 Node 中的消息,这些消息稍后将使用 Python 解密。

我的 Python 代码示例:

产生输出:gAAAAABhJs_E-dDVp_UrLK6PWLpukDAM0OT5M6bfcqvVoCvg7r63NSi4OWOamLpABuYQG-5wsts_9h7cLbCsWmctArXcGqelXz_BXl_o2C7KM9o7_eq7VTc=

我的 Node 脚本使用内置 Crypto 模块,并且还必须使用与我的 Python 程序中使用的相同的 32 字节密钥。我知道 fernet 使用的是 AES-128-CBC 作为它的算法,所以这就是我在 Node 脚本中使用的。

我的 NodeJS 代码:

这给了我:Error: Invalid key length

我的第一个问题是我不确定如何转换密钥以使其长度合适。通过查看 fernet 的源代码,我还知道密钥分为两部分:前 16 个字节是signing_key,最后 16 个字节是encryption_key- 我没有找到太多关于我是否需要/如何处理这两个字节的信息我的 Node 实现中的原始键的片段。

因为我是新手,所以我对如何完成我所追求的有点困惑。非常感谢任何提示或建议。

0 投票
0 回答
88 浏览

python - 密码学python包中的Fernet解密错误

我在 line(f = Fernet(private_key)) 处收到 Fernet 解密错误错误。请帮助解决这个问题。

错误:ValueError:Fernet 密钥必须是 32 个 url 安全的 base64 编码字节。

0 投票
0 回答
146 浏览

python - 使用 Fernet 进行密码加密

我是 python 新手,我正在做这些小项目,以便我可以构建自己。这是一个小项目,它只会使用主密码添加和查看用户名和密码。我能够通过加密文件中的密码添加用户名和密码。但是要查看密码,它在 23 和 39 行显示了两个问题。而且主密码也不起作用。

问题如图所示。

0 投票
2 回答
296 浏览

python - 如何解密最初使用 Fernet 加密的不同服务上的值?

我正在玩一个基于 python 后端的项目。我将 Django 用于“核心”内容,FastAPI 用于一些爬虫。Fernet我正在使用模块和自定义的 Django 将一些数据加密到数据库中Field

一切都按预期工作,问题是当我尝试解密 FastAPI 端的值时:

一些重要信息:

  • 我仔细检查settings.FERNET_KEY == FERNET_KEY,即,我在两边都使用相同的键。
  • 两个服务共享同一个数据库,并且函数在读取时接收不同的值。
    • Django -> from_db_value-> value->b"gAAAAABhSm94ADjyQES3JL-EiEX4pH2odwJnJe2qsuGk_K685vseoVNN6kuoF9CRdf2GxiIViOgiKVcZMk5olg7FrJL2cmMFvg=="
    • 快速API -> user.encrypted_field-> value-> b"pbkdf2_sha256$260000$RzIJ5Vg3Yx8JTz4y5ZHttZ$0z9CuQiPCJrBZqc/5DvxiEcbNHZpu8hAZgmibAe7nrQ="。我实际上进入了数据库并检查了这是存储在那里的值。user来自这里:

所以我想知道在from_db_value以某种方式转换价值之前有什么东西?!

最后一种选择是解密 Django 上的值并将其直接发送到 FastAPI,但我不希望这样做。

如何解密 FastAPI 上的值?

0 投票
4 回答
659 浏览

python - 如何使用 Python 加密大文件?

我正在尝试加密大于 1GB 的文件。我不想把它全部读到记忆中。我为这项任务选择了 Fernet (cryptography.fernet),因为它是最受推荐的(比不对称解决方案更快)。

我生成了密钥。然后我创建了一个脚本来加密:

和解密:

加密有效 - 不足为奇,但解密不是。首先,我认为它可能会起作用,但事实并非如此。我猜块大小在加密时会增加,然后当我读取 4096 字节时,它不是一个完整的加密块。我尝试解密时出错:

有没有办法解决这个问题?也许有比 fernet 更好(更简单)的解决方案?

0 投票
0 回答
33 浏览

pyspark - 加密数据框中 JSON 数组中的值

因此,我们在 JSON 对象的嵌套结构中有一个带有数组的结构,所以我们有 JSON 列,然后在嵌套结构中有一个称为地址的数组类型。我们正在寻求使用 fernet 对其中一些字段进行加密。目前我只做到了这一点:

Arraypath 是数组结构的路径,我们要加密的字段在字段变量中。我收到错误“TypeError:没有字符串参数的编码”,因为我无法深入到 encrypt 函数调用中的字符串值,有什么建议吗?

0 投票
0 回答
26 浏览

python - python fernet - 解密异常 InvalidToken - 用户登录认证

我正在尝试实现 fernet 文档中提供的解决方案(使用密码加密数据)下Using passwords with Fernet

由于我还想使用相同的密码进行用户登录身份验证,因此我想知道是否可以安全地假设加密数据不能用另一个(例如错误)密码解密,因为我得到了异常加密。 fernet.InvalidToken,用户身份验证也失败了,因为提供的密码与用于加密数据的密码不匹配

换句话说,我是否还需要使用带有散列密码实现的单独逻辑来检查身份验证,还是我可以仅依靠 fernet 异常 cryptography.fernet.InvalidToken 来实现这一点?