问题标签 [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 回答
197 浏览

hash - scrypt 块的概率公式

我目前正在研究并寻找一个公式来计算在 scrypt 中解决块的概率。就像https://www.litecoinpool.org/calc这样的东西,一个人输入哈希率/秒并看到他们解决块的可能性。

请注意,我知道独奏是无利可图的,而且我知道有些矿池可以简单地用于矿工。但这不是一般的挖矿问题,而是裂缝概率计算的背景问题。它仅用于研究如何计算区块发现中的概率,而不是讨论加密货币挖掘。

TIA

0 投票
2 回答
3877 浏览

opencl - Why is `lookup_gap=2` faster than `lookup_gap=1` when memory is enough

I'm mining Litecoins using an AMD Radeon HD7850 with 2G global memory, and my conf is below:

After reading the algorithms of scrypt130511.cl, I discovered lookup-gap is used for time memory tradeoff.

It consumes 512MB global memory when loopup-gap is 2, while it consumes 1GB global memory when loopup-gap is 1.

But after I change lookup-gap to 1, the hashrate dropped from 320K to 300K. Why is it slower when there's less computation?

0 投票
1 回答
434 浏览

bitcoin - Scrypt 算法输出与预期不匹配

我试图了解 scrypt 算法输出。

https://litecoin.info/Block_hashing_algorithm上,作者获得了 scrypt 加密结果headerString

01000000ae178934851bfa0e83ccb6a3fc4bfddff3641e104b6c4680c31509074e699be2bd672d8 d2199ef37a59678f92443083e3b85edef8b45c71759371f823bab59a97126614f44d5001d45920180[小端序]

000000003b4ba52ab765631e20a04b88cd27f0b66d3509fb2da7781fae6d7901. [大端]

我正在尝试复制它,但我无法重现该结果。我正在使用一个实现,它在本文结尾处为测试向量提供正确的输出:http ://www.tarsnap.com/scrypt/scrypt.pdf但是当headerString使用正确的 N 设置运行它时, r,p(1024,1,1) 我得到结果

c17fcd0c6d698828112ade740d4e8ad76705764da3abfc49ff3bb1863cd16472. [大端]

我已经尝试了相同的结果,这些实现具有相同的结果:

我在 scrypt 调用之后我只是在需要时将字节数组解析为十六进制字符串

我在这里错过了什么吗?我只是不明白为什么当我根据有关它的论文验证我的 scrypt 实现时,我没有得到相同的结果。

我真的需要帮助解决这个问题!如果我没有提供足够的信息,请询问并尽我所能清除事情。

0 投票
1 回答
934 浏览

gpu - SCrypt 查找差距负面影响

我正在为只有 32KB 内部存储器的处理器开发莱特币矿工。所以我在研究 SCrypt 算法,而对于 Litecoin,它使用 N = 1024,这给了我 2^10 * 1 * 128 = 128KB 的内存使用近似值。

所以我正在研究具有参数 Lookup Gap 的 GPU 算法。为了阅读,我正在使用 CudaMiner 的开普勒代码: https ://github.com/cbuchner1/CudaMiner/blob/master/kepler_kernel.cu (第 535 行)

所以我知道查找差距是 CPU 和内存之间的权衡。它越高,我的 CPU 使用率越高,内存越低。我不明白它是如何工作的。

在我的代码中

这将使它看起来每个 LOOKUP_GAP 字节的暂存器(如果它是 2,它将是 0、2、4、6、8、10),但是算法的 CPU 使用率在哪里?

我的实现不会被高度优化,类似于try to run

我还看到了一个使用插值的 FPGA 实现(https://github.com/kramble/FPGA-Litecoin-Miner),这对我来说更奇怪。我不知道他们如何对暂存器中的值进行插值。

谢谢!

0 投票
3 回答
4025 浏览

java - Bouncy Castle scrypt 实现

我目前正在使用scrypt实现密码散列。我已经在 GitHub 上找到了一个不错的scrypt实现。令我惊讶的是,我还在Bouncy Castle 库中发现了一个scrypt实现。该课程没有记录,维基百科没有提到 Bouncy Castle 作为 scrypt 实现提供者,而且我很难找到任何使用 Bouncy Castles scrypt 的人的代码示例,所以这对我来说有点可疑。

另一方面,如果我必须在 GitHub 的加密实现和 Bouncy Castle 之间进行选择,我会更喜欢 Bouncy Castle。

那么Bouncy Castles scrypt是“真实的东西”吗?我可以在 JCA 提供程序 API 上使用 Bouncy Castles scrypt 吗(或者我是否需要像这里一样直接调用它:AES-256 encryption workflow in scala with bouncy castle: salt and IV usage and transfer/storage)?


编辑:我现在能得到的最佳答案:https ://www.bouncycastle.org/devmailarchive/msg13653.html

0 投票
2 回答
530 浏览

javascript - scrypt 对使用 Dart 的浏览器中的密码认证的适用性

我编写了一个带有自定义二进制 websocket 协议的 Go 服务器和一个 Dart 客户端。服务器上的用户身份验证使用scrypt和推荐的参数N=16384, r=8, p=1(盐长度为 16,生成的密钥长度为 64),我的 i7 桌面可能需要一两秒才能通过身份验证服务器端。这与实际上是即时的,比如 SHA-512 身份验证相比。

我在为 Dart 找到 scrypt 实现时遇到了麻烦,虽然这个实现是有效的,但在浏览器 (Firefox) 中生成具有相同参数的相同哈希需要很长时间才能实际完成。我可以在同一台机器上使用 N=1024 和 r<=8 将其缩短到几秒钟,但如果我出于兼容性考虑,在服务器端,身份验证时间再次用于实际目的。

Scrypt 在服务器端很棒,但我想知道它对于浏览器客户端是否实用。诚然,我还没有看到任何/很多人使用 scrypt 进行浏览器身份验证的例子。我应该坚持并解决性能问题(例如,可能使用 dart 中的其他 javascript 库),还是目前这是一个基本限制?在您还不如只使用更广泛可用、优化的加密散列算法(如 SHA)之前,您可以将 scrypt 参数降低到多低?

0 投票
2 回答
250 浏览

hash - 弱密码的强单向哈希

我正在寻找一种强大的单向散列函数,它加密(真正)弱密码(10^9 组合)。crypt 函数还必须满足一些要求:

  1. 来自相同明文的相同哈希值。所以 scrypt/bcrypt 和公钥/私钥方法是不可能的(或者我在这里可能错了吗?)。

  2. 没有像 AES 中那样的共享密钥。因为不同的客户端必须创建相同的哈希值。

  3. 无盐

那么有什么办法可以增加对这么小的字符空间进行暴力破解的难度呢?我已经尝试过使用多轮 SHA256 进行密钥拉伸,但我不是需要多少轮才能显着增加计算时间(我猜必须是数十亿)。到目前为止,我唯一想到的是使用添加到密码中的服务器端密码。但是如果发生腐败,很难保证这个秘密仍然是一个秘密......我很乐意提供一些提示或想法!问候, r0cks

0 投票
1 回答
1915 浏览

node.js - 在 node.js 中使用“scrypt”模块时出现“找不到指定的模块”错误

我正在尝试使用“scrypt”模块。问题是当我尝试运行我的 nodejs 应用程序(node app.js)时,我收到了这个错误:

我用这一行安装了“scrypt”模块:

-msvs_version 取自这个答案

0 投票
1 回答
371 浏览

scrypt - 为什么不同的 scrypt 实现会产生不同的结果?

我使用这个 scrypt实现实现了一个简单的 gode,用于使用 Go 确定性地生成密码。我的代码在这里,这是相关部分的摘录:

运行代码我得到输出:

但是,当我尝试基于 C 实现的libscrypt时,我不会得到相同的输出。我会得到:

C代码在这里,这是主要部分:

我还遇到了另一个实现scrypt-jane,它在散列时给出了另一个结果。虽然我意识到这可能是因为 scrypt jane 允许您选择使用哪个散列函数。在任何情况下,我都没有使用随机盐。

我想在这里验证的我自己的预感是,对于 scrypt 使用哪些散列函数没有明确的标准。如果是这样,我如何确保 Go、C、python 或 JavaScript 中的实现都产生相同的结果?我宁愿避免自己移植代码,因为我知道这在密码学中是有风险的业务。

0 投票
2 回答
3827 浏览

scrypt - scrypt 输出的最大长度是多少?

我想在数据库中存储一个scrypt哈希密码。我可以预期的最大长度是多少?