问题标签 [digest]

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 投票
3 回答
4635 浏览

python - python hashlib和sha512sum工具之间SHA512的区别

我从 linux 'sha512sum' 工具和 python hashlib 库中获得了不同的消息摘要。

这是我在 Ubuntu 8.10 上得到的:

两者都应该计算字符串“test”的消息摘要,为什么你认为我得到不同的结果?

0 投票
1 回答
1279 浏览

java - MySQL PASSWORD() 函数的 JDBCRealm 摘要

对于内部 Tomcat/Java/Struts 应用程序,我们将自定义编写的身份验证代码转换为使用 JDBCRealm。数据库是 MySQL 5.0,密码存储为PASSWORD()加密字符串。在我们的 MySQL 版本中,该PASSWORD()函数是一个非标准(专有?)的 41 字节散列。(我现在知道我们不应该将它用于我们的密码,而应该使用SHA1()or MD5()。但我们在这里。)

有什么方法可以使用 JDBMRealm 而不强制我们所有的用户重新输入他们的密码,以便我们重新编码它们?是否有 JDBCRealm 摘要允许我们针对PASSWORD()-encoded 密码列进行身份验证?

0 投票
5 回答
14862 浏览

math - 两条消息具有相同 MD5 摘要和相同 SHA1 摘要的可能性有多大?

给定两条不同的消息,A 和 B(可能 20-80 个字符的文本,如果大小很重要的话),A 的 MD5 摘要与 B 的 MD5 摘要和 A 的 SHA1 摘要相同的概率多少与 B 的 SHA1 摘要相同吗?那是:

假设没有恶意,即选择消息的目的不是为了发现冲突。我只是想知道这种情况自然发生的几率。

我认为机会“非常低”,但我不确定如何验证这一点。

更多信息:可能的消息池的大小受到限制,但很大(几亿)。生日悖论的情况正是我担心的。

0 投票
1 回答
861 浏览

linux - 无法在 SUSE Linux 10.0 上构建“cyrus-sasl-2.1.23”

我从“ ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/ ”下载了源代码。

配置进行得很顺利,但是当我构建时,我最终遇到了以下错误:

……

0 投票
2 回答
510 浏览

perl - 为什么 Digest::SHA 提出的散列值与 RFC 4868 中显示的散列值不同?

我正在尝试编写一些 Perl 来与其他语言的哈希函数进行交互操作,此时也就是 Java。我们找到了可能是正确的来源,RFC 4868,其中包括一些测试键和字符串以及它们的散列值。我正在使用以下代码段,但无法让 Perl 得出相同的结果。我只能假设我使用不正确 - 谁能指出我正确的方向?

输出是 '4ef7 ... 5d40',虽然 RFC 4868(和我同胞的 Java 实现)返回 '87aa ... 6854'

0 投票
1 回答
1894 浏览

python - 带有 URLLIB2 的客户端摘要身份验证 Python 不会记住授权标头信息

我正在尝试使用 Python 编写一个连接到使用摘要身份验证的自定义 http 服务器的客户端。我可以毫无问题地连接并拉取第一个请求。使用 TCPDUMP(我在 MAC OS X 上——我既是 MAC 又是 Python 菜鸟)我可以看到第一个请求实际上是两个 http 请求,如果您熟悉 RFC2617,您会期望。第一个结果是 401 UNAUTHORIZED。从服务器发回的标头信息被正确地用于生成带有一些自定义授权标头值的第二个请求的标头,这会产生 200 OK 响应和有效负载。

一切都很好。感谢 urllib2,我的 HTTPDigestAuthHandler 开启器正在工作。

在同一个程序中,我尝试从同一个服务器请求第二个不同的页面。根据 RFC,我希望 TCPDUMP 这次只显示一个请求,使用几乎所有相同的授权标头信息(nc 应该增加)。

相反,它从头开始,首先获取 401 并重新生成 200 所需的信息。

urllib2 是否有可能让带有摘要身份验证的后续请求回收已知的授权标头值并且只执行一个请求?

[重读几次,直到它有意义,我不知道如何使它更清楚]

谷歌的收益出乎意料地少,所以我猜不是。我查看了 urllib2.py 的代码,它真的很乱(评论如下:“这不是一个很棒的努力”),所以如果这是一个错误,我不会感到震惊。我注意到我的 Connection Header 已关闭,即使我将其设置为 keepalive,它也会被覆盖。这导致我使用keepalive.py,但这对我也不起作用。

Pycurl 也不起作用。

我可以手动编写整个交互的代码,但我想尽可能利用现有的库。

总之,是否可以使用 urllib2 和摘要身份验证从同一服务器获取 2 个页面,只执行 3 个 http 请求(第一页 2 个,第二个页面 1 个)。

如果您碰巧之前尝试过并且已经知道这是不可能的,请告诉我。如果您有其他选择,我会全力以赴。

提前致谢。

0 投票
2 回答
3104 浏览

.net - HTTPS 和摘要式身份验证

如何在 C#.Net 中使用摘要式身份验证实现 HTTPS?根据 msdn,凭据类不支持 SSL .. 那么我们如何实现身份验证呢?我的代码适用于基本身份验证,但摘要出错..

0 投票
2 回答
1876 浏览

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

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

jBCrypt 使用:

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

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

谢谢,弗拉基米尔

0 投票
2 回答
8082 浏览

security - HTTP 摘要式身份验证

我想将 HTTP Digest Authentication 与存储用户名和加密密码的中央数据库一起使用。这些数据应该由不同的服务器使用,例如 Apache httpd 或 Tomcat。客户端将是具有浏览器和其他应用程序以 RESTful 方式进行通信的人。

据我了解,我无法使用带有散列密码的表。只有在需要明文密码的地方才可能存储 HA1 = MD5(username:realm:password) - 对吗?

另一方面,似乎可以在 Apache httpd 中使用散列密码:

Apache httpd 文档说:

查询语句返回的第一行的第一列值应该是包含加密密码的字符串。

它适用于摘要身份验证吗?没有指定散列算法的参数。Apache httpd 如何决定使用哪种算法?

RFC 2617说:

4.13 存储密码

摘要式身份验证要求身份验证代理(通常是服务器)将一些从用户名和密码派生的数据存储在与给定领域关联的“密码文件”中。通常这可能包含由用户名和 H(A1) 组成的对,其中 H(A1) 是如上所述的用户名、领域和密码的摘要值。

听起来密码必须是明文。

Servlet 3.0 规范说:

尽管密码不是在线发送的,但 HTTP Digest 身份验证要求身份验证容器可以使用明文密码等效项,以便它可以通过计算预期的摘要来验证接收到的身份验证器。

这里的“明文密码等效”是什么?密码哈希?

Tomcat 文档说:

如果使用带有 DIGEST 身份验证的摘要密码,则用于生成摘要的明文是不同的。在上面的示例中,{cleartext-password} 必须替换为 {username}:{realm}:{cleartext-password}。例如,在开发环境中,这可能采用 testUser:localhost:8080:testPassword 的形式。

这里需要一个明文密码。

那么,HTTP Digest 身份验证可以与已经加密的密码一起使用还是让密码为明文?

如果他从不同的子域请求页面,用户是否必须重新输入他的凭据?

浏览器是在关闭选项卡时删除缓存的密码还是仅在整个关闭时才删除?也许这因浏览器而异 - 我会对哪个浏览器删除它以及保留它感兴趣。

总体问题是,摘要式身份验证是否适合我的场景,其中中央用户 db 已经加密了密码。还是我应该更好地使用基于会话的单点登录服务?

0 投票
1 回答
993 浏览

c# - 无法使用 C# 和摘要身份验证连接到 TLS Web 服务,Firefox 成功而 IE8 失败

我正在尝试使用 C# 和摘要式身份验证连接到 Web 服务,但每次都出现401 - Not Authorized错误。但是当我尝试通过 Firefox 访问该服务时,一切正常。当我使用 IE8 时,我的密码不被接受,我得到了 401。

你有什么想法?谢谢您的帮助。

这是我正在使用的测试代码: