问题标签 [blowfish]
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.
security - jBCrypt checkpw 的严重问题(不应该返回true?)
编辑:好的,所以我在这里找到了一个答案BCrypt 说很长,类似的密码是等效的 - 我的问题,宝石或密码学领域?
不过,新问题是,如果在我们试图教育用户选择越来越复杂的密码甚至密码短语的世界中,如果您必须限制用户的密码长度,那么有人如何推荐使用 bCrypt 进行散列,说您的密码必须短于 n 个字符似乎是在 thedailywtf.com 周五的截图中结束的一种方式:)
下面的原始问题:
我正在为一个应用程序重构一个旧的登录页面,并决定使用 JAVA 实现 jBCrypt ( http://www.mindrot.org/projects/jBCrypt/ ) 给 bCrypt 一个旋转,并遇到了一个主要的显示停止器。
问题在于checkpw方法,当使用很长的种子时,它似乎总是返回 true。我打算用 {InternalSalt}{username}{password} 对用户的密码加盐,然后用 bCrypt 对其进行哈希处理。
所以我有以下代码(尽可能将其剥离以隔离checkpw)。
}
这将打印“它匹配”。
我遇到的问题是说您将say aaa添加到您传递给checkpw 的密码中
BCrypt.checkpw("jw~ct/f61y1m7q458GiLVQpiqDK|8kG=d368Id:D@$^_80I{qrn1HM6423{FtestAccountO1nu3jKNaaa", pw_hash)
它仍然返回真实!不完全是我所期待的。我在文档中看不到任何密码长度限制,但我无法用较小的密码种子重现它,而且看起来如果我修改了字符串末尾以外的任何其他内容,它会按预期返回 false。
我错过了什么重要的事情吗?我知道我一定不是唯一在这些论坛上使用 jBcrypt 的人,因为我在做一些研究时看到许多帖子中推荐了 BCrypt。
编辑:Windows 7 64 位 - Java(TM) SE 运行时环境(构建 1.6.0_24-b07)
java - 允许用户输入用于河豚加密的密钥
我正在编写一个 sqlite 数据库,它将使用河豚加密消息。然而,为了有效地使用它,用户必须能够在程序启动时输入数据库的密钥。问题是我使用随机生成的密钥来保证安全,但这似乎使用户无法输入密钥。有没有人知道如何让用户输入密钥,同时避免强迫他们输入,例如,一个空字符。
c++ - 施奈尔河豚
有人可以向我展示 Schneier 的 Blowfish 代码 ( http://www.schneier.com/code/bfsh-sch.zip )的示例用法,即使用 C 或 C++ 使用给定密钥加密和解密字符串吗?
提前致谢。
编辑:这不是家庭作业。
encryption - Blowfish Block Size 64bits - 当输入不是 64bits 的倍数时该怎么办
我正在创建一个应用程序来用 Blowfish 加密一个未知长度的字符串。输入可以是任意长度,因此不一定是 8 个字节的倍数。
处理这种情况的标准方法是什么?也许用 0 填充字符串的末尾?大概有更优雅的方式?
提前致谢。
c++ - 仅使用密钥的第一个字符进行 Blowfish 加密/解密
我正在使用 Bruce Schneier 的源代码使用 Blowfish 加密一些数据。一切似乎都很好,只是我注意到当我使用 8 字节密钥进行加密时,可以使用该 8 字节密钥的第一个字符对其进行解密(例如,使用密钥“abcdefgh”加密,并且可以使用“a”进行解密) )。
以下是我的代码中的一些摘录:
初始化河豚:
然后我将输入以 8 字节块的形式存储到两个联合中,每个联合有四个字符和一个无符号长整数。
然后我加密:
其中 xl.l 和 xr.l 在我的两个联合 xl 和 xr 中都是无符号长整数。
解密:
请注意,如果密钥是随机的,它不会解密,只有当它是正确的密钥或它的第一个字节时。
到底是怎么回事?!
谢谢你的帮助。
c# - 如何在 C# 中使用 BouncyCastle 进行 Blowfish 单向哈希?
我看过很多关于 Blowfish 和 C# 的问题,通常的答案是BouncyCastle。但是,该项目基本上没有文档,我无法在目录结构中找到方法,甚至无法找到单元测试作为示例。我的意思是,Blowfish 是被称为 Asn1、Bcpg、Crypto(一般来说?)、EC、Ocsp、Pkcs 还是什么?我缺乏了解源代码中所有首字母缩写词含义的领域知识。
是否有任何有用的文章或博客或成功使用 C# BouncyCastle API for Blowfish 的东西?我的主要需要是使用 Blowfish 进行密码散列。
c# - BouncyCastle BlowFish 加密问题
这是我的 BlowFishCrypto 类
在我的另一堂课中,我尝试对其进行测试,所以我做到了
outputhex 函数会将结果输出为十六进制
所以结果是:
它不工作,但为什么?
c# - 我可以用于 BlowFish/DH 的最佳库是什么?
什么是我可以用于 BlowFish/DH 的最佳库,因为我使用的是 BouncyCastle,但它看起来不像我想要的那样,所以我想知道是否有另一个库我可以使用,所以它让我可以使用 CFB/卫生署?谢谢
这是我的 BouncyCastle 课程:
php - 用 MCRYPT_BLOWFISH 模拟 CRYPT_BLOWFISH
我的问题是,关于河豚,我如何从 mcrypt 获得与从 crypt 获得的结果相同的结果?
我想使用phpass 框架进行密码哈希和验证。只要你有 PHP 5.3 就可以很好地工作,因为crypt()
. 我的主机使用 mcrypt 库运行 PHP 5.2.x。
浏览文档并使用 crypt 搜索河豚,结果似乎是'$a2$'
,两个字符的迭代值,,'$'
盐(填充或剪切为 22 个字符),然后是一个 32 base64 字符串表示哈希。
我的问题是我找不到对MCRYPT_MODE_modenames
我有意义的解释。以及如何提供mcrypt()
我想要的迭代次数?还是这两个函数使用不同形式的不交叉翻译的河豚?
perl - 如何使用加盐标头解密 Blowfish 密文?
我有一些已使用 Perl 的Crypt::CBC模块加密的密文,我希望在其他地方解密。
密文是使用Crypt::CBC
构造函数的“简单”版本生成的,即:
通过阅读 MAN 页面,这种构造方法将采用简单的字符串密钥和随机盐来生成用于加密的 IV 和文字密钥,并在盐中嵌入标头。
“salt”——将密码短语与一个 8 字节的随机值结合起来,从提供的密码短语中生成分组密码密钥和 IV。盐将被附加到数据流的开头,允许解密重新生成密钥和 IV 给定正确的密码。此方法与当前版本的 OpenSSL 兼容。
我现在需要在另一个平台上解密密文,该平台只支持给定密文、文字密钥和 IV 的 CBC 解密。为了尝试生成文字键 IV & salt,我使用 Crypt::CBC 生成如下值:
这里的解密是正确的,但是我一直无法使用生成的文字密钥 & IV 来解密密码;这会产生垃圾:
我无法提供文字键并使用加盐标题,因此我对下一步行动感到迷茫。
我怎样才能解密这个文本?
编辑:目标系统没有运行 Perl,但我已经能够生成与上面 $rubbish 中相同的值,所以我确定它使用相同的算法(CBC、Blowfish)来破译。