问题标签 [scrypt]

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 投票
1 回答
70 浏览

ruby - 无法在 Ruby-s 和 Go-s 实现之间创建相同的 scrypt 摘要

我在计算RbNaClGo 的 implementation之间相同的 scrypt 摘要时遇到问题。

这是我使用 rbnacl 生成密钥的方式:

opslimitmemlimit参数值已从文档中找到。

这是我用 Go 复制相同结果的尝试:

文档中获取NrpkeyLength的值。

密码具有相同的值。

我不是密码学家,但据我所知,应该有相同的成本因子值来获得相同的摘要?这里的问题是,由于两种实现都采用不同数量的参数,我也很难找到正确的组合。任何想法如何使这两种实现之间的成本因素匹配,以便我可以在两种编程语言之间计算相同的 scrypt 哈希?

0 投票
2 回答
1522 浏览

python - 使用 Python 3.6 安装 Python 包 scrypt

我一直在尝试scrypt在我的 Windows 64 位笔记本电脑上安装 Python 包,因为我想使用的另一个包需要它。同样的包也需要 Python 3.6,所以在我的电脑上我既有 Python 2.7 也有 3.6,并使用pippip3区分两者。一切pip install scrypt安装正常,但使用时pip3 install scrypt出现以下错误:

我尝试通过像这样克隆存储库来解决这个问题:

然后给出以下错误

然后我通过更改以下代码解决了这个错误setup.py

简单地让库是 64 位的

但这再次给出了一个错误:

之后我放弃了,来到这里问该怎么办。如何scrypt在 Windows 上使用 Python 3.6?

0 投票
0 回答
397 浏览

android - Android 4.4 FDE(Scrypt 页脚)

对于像我这样对 Android 加密感兴趣并有兴趣教我一课的人 :D:

我正在各种操作系统上使用 Android 全盘加密 (FDE),我发现引入 Scrypt 的 Android 4 得到了相当大的保障,我找不到关于如何存储密钥的明确解决方案。我已在此处enter code here( https://pastebin.com/qbszUSa3 ) 粘贴了一个 16KB 页脚,该页脚来自运行 Android 4.4.4 的加密三星 S4 mini 的用户数据分区,从神奇的 0xC5B1B5D0 开始。

我一直在不懈地尝试破译页脚的格式,以便我可以提取密钥,但是哈希/填充/盐结构似乎并不存在,甚至作为一个 scrypt 页脚,据我所知,是Android 4.0 中引入的密钥派生功能,我看不到我需要什么。我已经尝试过 Santoku-Linux 蛮力 python 脚本:(https://github.com/santoku/Santoku-Linux/blob/master/tools/android/android_bruteforce_stdcrypto/bruteforce_stdcrypto.py)尝试识别密钥,但它只拉回零。

我希望这个论坛上的人可以识别页脚的格式,并对这种类型的加密有一些见解或经验。

0 投票
1 回答
140 浏览

python - 如何让 py-scrypt 的“简单密码验证器”示例功能工作?

我正在使用提供的示例脚本py-scrypt来构建一个简单的密码验证器。下面是我的测试脚本。

测试脚本:

问题: 我经常收到错误消息,例如:

最后几行变化为例如:

或者

或没有错误信息但返回 False

当我评论return scrypt.encrypt(os.urandom(datalength), password, maxtime=maxtime)删除随机秘密消息生成器并取消评论return scrypt.encrypt(a_secret_message, password, maxtime=maxtime)以使用非随机秘密消息时,该功能verify2_password起作用。

问题:如何让随机秘密消息元素起作用?是什么导致它的失败?

0 投票
1 回答
1340 浏览

python - Golang Scrypt 解密

我试图在 Go 中模仿,python 库 ( https://pypi.org/project/scrypt/ ) 中可用的功能,用于解密scrypt 生成的摘要(给定正确的密码)。

似乎 go 库只提供了一个用于加密数据的函数,而这个 python 库似乎不仅提供了这一点,而且还提供了一种反转/解密摘要的方法,以及提供使用 scrypt 进行更简单的单向哈希的函数功能。

我不是安全专家,我也不懂数学/数字,所以我觉得试图复制那个 python 库超出了我的理解。我认为这是可能的,因为 python 库似乎已经实现了它。

有谁知道我什至会从哪里开始解决这个问题。或者慷慨地利用他们的时间提供某种形式的示例代码来帮助我。

谢谢。

更新

scrypt 函数本质上是一个散列函数。它使用密码作为派生摘要的一种方式:意思是,应该无法检索原始消息(经过哈希处理的消息)。

因此,有了这种理解,Golang 的 scrypt 接口不支持任何此类功能(例如decrypt. 但是 py-script 的decrypt功能是如何工作的呢?

好吧,如果我回顾一下https://www.tarsnap.com/scrypt.html它指出 scrypt 可执行文件提供了一个“加密实用程序”......

一个简单的基于密码的加密实用程序可用作 scrypt 密钥派生功能的演示。可以调用 scrypt 实用程序scrypt enc infile [outfile]来加密数据(如果outfile未指定,则将加密数据写入标准输出)或scrypt dec infile [outfile]解密数据(如果outfile未指定,则将解密数据写入标准输出)。

...并且在检查 py-script 我看到它嵌入了 scrypt 可执行文件的一个版本,这意味着 py-script 正在调用可执行文件的encdec函数。

因此,虽然我不一定知道 tarsnap 的加密实用程序是如何构建的以及它在幕后所做的事情(例如,正在使用什么实际加密算法),但事实是 scrypt 只是真正设计为密钥派生函数和摘要输出由那些附加的 tarsnap 函数以支持加密/解密的方式使用。

0 投票
0 回答
69 浏览

hash - 如何检查两个散列字符串是否属于相同的明文密码

最近我遇到了一个与密码编码/解码以及在数据库中匹配和更新相同的问题,需要你们的帮助。问题如下 -

  1. 用户来到门户创建帐户,该帐户的数据存储在 db 中(例如将其命名为 db1),其中包含 account_name 和 hashed_pa​​ssword

  2. 现在我必须将此数据移动到另一个数据库(例如将其命名为 db2),其中可能已经存在相同的数据。

  3. 现在,在移动数据时,我必须确定存储在 db1 和 db2 中的散列密码是否用于相同的明文密码并决定执行 -

    • 如果匹配,则更新同一行 b。
    • 如果不匹配插入新行

如何匹配相同明文密码的编码值(即使它们是相同的,因为每次散列运行它都会创建新的散列字符串)

我正在使用内置的 java 安全 api 和 Scrypt/MD5/Legacy 算法。

0 投票
2 回答
294 浏览

firebase - Firebase 的 scrypt 版本不提供与 save 相同的哈希值

我在这里是因为我正在处理这个repo

当我比较来自 firebase 的哈希值和我使用firebase 创建的实用程序创建的哈希值时,使用相同的盐和相同的参数为相同的密码,它们是不一样的。

有人对解决方案样本有任何想法吗?我完全被卡住了,我不明白这里发生了什么^^'

谢谢 !

编辑:散列函数(也在这里

}

编辑 2:我忘了说,但我使用 admin sdk 导出用户密码哈希。

0 投票
0 回答
634 浏览

python - 无法将库加载到 pyinstaller

问题

我一直在尝试将一个相当大的 python 应用程序构建为 Windows 的可执行文件。我已经完成了一个运行良好的 mac 构建,但我似乎卡在了 scrypt 模块在运行时尝试加载的 _scrypt .pyd 文件中。

我尝试了以下方法:

  • 在我的规范文件中定义二进制文件和隐藏导入下的 scrypt .pyd 文件。这适用于我需要添加的所有其他文件。

  • 使用运行时挂钩。

  • 使用任何其他可用的 python 冻结应用程序。

  • 编辑 scrypts 代码。

  • 最多下载 SSL 证书 1.1。

  • 重新安装 microsoft .dll 我可能会丢失。

  • 重新安装 scrypt 模块和 pycryptodome 模块。

运行import scrypt到 python 终端给了我OSError: [WinError 126] The specified module could not be found,虽然奇怪地运行我正在尝试构建的程序,直到尝试使用 pyinstaller。

scrypt模块中的相关代码

非常感谢任何建议下一步去哪里,谢谢。

0 投票
0 回答
214 浏览

python - 尝试使用 AES 128 CTR 复制以太坊密钥库文件

我正在尝试通过使用 Python 中的 pyscrypt 和 Crypto 库执行加密来复制以太坊密钥库文件。我使用 MyEtherWallet 创建了一个 Ethereum Keystore 文件。我从 MyEtherWallet 中获取了 SALT、IV、私钥、密码的值,并将它们硬编码到我的程序中。

My CipherText 与 Ethereum Keystore 文件中的密文不同。我想获得与 MyEtherWallet 相同的密文值。只有不同的参数可能是计数器值。

0 投票
0 回答
54 浏览

perl - Crypt::ScryptKDF::scrypt_hash 如何对输入进行哈希处理?

我在考虑是否应该在此处或 crypto.stackexchange.com 上发布该问题。我认为这个问题更多地与实施有关,而不是与理论有关,所以我们开始吧:

我决定将scrypt其用作我未来后端的密码散列方法。我的一些后端是用 Perl 编写的,所以我打算使用Crypt::ScryptKDF.

很清楚如何使用它,但还有一个问题:(scrypt据我所知)是密钥推导函数而不是散列函数。那么哈希实际上是如何完成的呢?

它只是用从相同(加盐)输入字符串(密码)派生的密钥加密(加盐)输入字符串(例如密码),还是还有更多?