问题标签 [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.

0 投票
2 回答
1876 浏览

hash - 如何检查两个散列密码是否相同?

我正在编写一个程序,在将登录详细信息发送到服务器之前,我使用 MD5 对其进行哈希处理,但是我必须将其与从数据库中检索到的河豚(jBCrypt)哈希密码进行比较。

jBCrypt 使用:

问题是,我没有要测试的候选密码。我怎样才能既安全地传输我的登录详细信息又将这些详细信息安全地存储在数据库中。解决这个问题的最佳方法是什么?

我使用用户名、时间戳、随机字节和密码来创建我的 md5 摘要值。

谢谢,弗拉基米尔

0 投票
3 回答
3117 浏览

encryption - ColdFusion 的加密问题

我正在尝试将一些加密(短)信息存储在 cookie 中。我正在生成一个短字符串(大约 64 个字符),使用 generateSecretKey() 生成密钥,并尝试使用 AES 或 Blowfish 加密。

我已经使用 encode() 和 decode() 函数中的参数尝试了默认的 UUEncoding、Base64 和 Hex。

使用 AES,我得到了错误

尝试加密或解密您的输入字符串时发生错误:com.rsa.jsafe.crypto.dr:无法执行取消填充:无效填充字节..

使用 Blowfish,我得到了错误

尝试加密或解密您的输入字符串时发生错误:未正确填充最终块。

我究竟做错了什么?

0 投票
3 回答
15414 浏览

c# - C#河豚加密/解密

任何人都有可以加密/解密文本的河豚库的链接?

我找到了一些适用于 Windows 的 .dll 并使用 pinvoke 加密/解密文本,但这些 dll 在 linux(单声道)上不起作用。最好我希望一个库可以在 Windows 和 linux 上工作

谢谢。

0 投票
1 回答
1808 浏览

php - NSIS 和 PHP 之间的 Blowfish 加密消息

对于我正在处理的项目,我需要使用 Blowfish 以跨 NSIS 和 PHP 的兼容方式加密和解密字符串。

目前我正在使用NSIS的Blowfish++ 插件mcrypt和PHP 库。问题是,我不能让它们都产生相同的输出。

让我们从 NSIS Blowfish++ 插件开始。基本上API是:

没有提到它是否是 CBC、ECB、CFB 等,而且我对 Blowfish 还不够熟悉,无法通过阅读大部分未记录的来源来判断。我认为它是 ECB ,因为PHP 文档mcrypt告诉我 ECB 不需要 IV

我还通过阅读源代码了解到 Blowfish++ 插件将对第二个参数进行 Base64 解码以进行加密(我不确定为什么)。它还返回一个 Base64 编码的字符串。

对于 PHP 方面,我基本上是使用这段代码来加密:

但是,如果我做所有这些事情,我会得到以下输出:

我究竟做错了什么?NSIS 插件不使用 ECB 吗?如果不是,它的 IV 有什么用?

0 投票
3 回答
510 浏览

security - 对称密钥到非对称密钥切换

我不是密码学专家,我实际上只有一点点使用它的经验。无论如何,现在是我的一个应用程序要求我设置一些加密的时候了。请注意,该程序不会管理任何能够造成大量损害的超级关键。

无论如何,我只是想看看我正在使用的这个方案是否常见以及是否存在缺陷(其中可能存在完全愚蠢和严重缺陷的设计,这就是我问的原因)。

好的,我有一个客户端-> 服务器通信。我可以在 2048 位 RSA 密钥的公共部分硬编码客户端。当客户端想要启动安全连接时,他会发送他的用户名、密码的 md5 哈希值和随机 UUID 的哈希值,所有这些都已根据服务器的公钥加密。服务器接收信息并使用其私钥解密。检查数据库以查看他的登录+通过是否有效,如果有效,则在数据库的“会话”表中创建一个新条目。这包括 SessionID、UID(用户 ID)和 UUID 哈希。使用相应会话 ID 的 UUID 作为关键字,服务器将发回一条消息,其中包含 Blowfish 加密词“成功!” + 一个随机 UUID(此消息经过数字签名,因此我们可以确定它是否来自服务器)。从那时起,当客户端向服务器发送信息时,它将带有明文 sess_id 并包含 Blowfish 加密消息,使用相应会话 ID 的河豚机密(加密存储在数据库中)作为加密/解密的密钥。

具体来说,我很好奇这个系统是否“应该工作”,或者是否有人注意到存在明显的漏洞,例如 MITM。

0 投票
1 回答
8894 浏览

php - 使用 PHP 的 crypt 的河豚盐的正确格式是什么?

我已经阅读了PHP Manual Entry forcrypt()中提供的信息,但我发现自己仍然不确定触发 Blowfish 算法的盐的格式。

根据手动输入,我应该使用 '$2$' 或 '$2a$' 作为 16 个字符的字符串的开头。但是,在后面给出的示例中,他们使用了更长的字符串:' $2a$07$usesomesillystringforsalt$',这向我表明,我提供的任何字符串都将被切片和切块以适合模型。

我遇到的问题实际上是触发 Blowfish 算法与STD_DES. 例子:

该哈希显然不是漩涡,实际上STD_DES只有盐的前两个字符用于盐。但是,在 PHP 手册的示例中,它们的 salt 以 ' $2a$07$' 开头,所以如果我将这三个字符添加到相同的代码中,我会得到以下信息:

我注意到我可以在此处显示为 ' 07$' 的字符中提供一些差异,例如04$15$两者都可以工作,但01$通过03$不工作(生成一个空白字符串),以及诸如和之类的值99$导致85$STD_DES再次恢复.

问题:

' ' 字符串后面的这三个字符的意义是什么$2a$,正如我被手册所引导的那样,指示 crypt 函数使用河豚方法。

根据手册,' $2a$'应该足以指导crypt()使用河豚方法;那么,以下三个字符的意义是什么?那么,如果这三个字符如此重要,那么盐的正确格式是什么?

0 投票
4 回答
14199 浏览

php - 为什么 crypt/blowfish 使用两种不同的盐生成相同的哈希?

这个问题与 PHP 的crypt(). 对于这个问题,不计算盐的前 7 个字符,因此盐 ' $2a$07$a' 的长度为 1,因为它只有盐的 1 个字符和元数据的七个字符。

当使用长度超过 22 个字符的 salt 字符串时,生成的哈希值没有变化(即截断),而当使用少于 21 个字符的字符串时,salt 将自动被填充($显然是用 ' ' 字符);这相当简单。但是,如果给定一个盐 20 个字符和一个盐 21 个字符,其中除了 21 长度盐的最后一个字符之外,两者相同,则两个散列字符串将相同。一个长度为 22 个字符的盐,除了最后一个字符外,它与 21 个长度的盐相同,哈希将再次不同。

代码示例:

将产生:

为什么是这样?

编辑:

一些用户注意到整个字符串存在差异,这是真的。在salt_20, 偏移量 (28, 4) 是da$., 而在salt_21, 偏移量 (28, 4) 是da2.; 但是,重要的是要注意生成的字符串包括哈希、盐以及生成盐的指令(即$2a$07$);实际上,发生差异的部分仍然是盐。实际的哈希值不变UxGYN739wLkV5PGoR1XA4EvNVPjwylG

因此,这实际上不是产生的哈希的差异,而是用于存储哈希的盐的差异,这正是当前的问题:两个盐生成相同的哈希。

Rembmer:输出将采用以下格式:

其中 ## 是 log-base-2 确定算法运行的迭代次数

编辑2:

在评论中,要求我发布一些附加信息,因为用户无法重现我的输出。执行以下代码:

产生以下输出:

希望这可以帮助。

0 投票
1 回答
1012 浏览

c# - 理解开源 Blowfish API 的问题

编码的过程。这是工作

//开始方法str到数组

//end 方法
//blowfish 类开始

0 投票
1 回答
3635 浏览

android - 在 Android 上使用河豚加密?

我正在尝试在 Android 应用程序中使用河豚密码。
看来Android平台支持河豚(它似乎在源代码中),但是当我尝试使用以下方法获取密码时:

0 投票
1 回答
28528 浏览

c# - 在 .NET 中使用 Blowfish 加密

我正在做一个需要进行 Blowfish 加密和解密的项目。是否有其他人用来在其中执行此操作但在 .NET C# 环境中找不到任何内容?

理想情况下,我希望某些东西不依赖于运行 exe,因为它最终将存在于裸露 exe 的实时服务器上!

我已经阅读了一些关于 SO 的旧帖子,但没有合适的。

有任何想法吗?谢谢