【问题标题】:Is SHA-256 Case Insensitive?SHA-256 是否区分大小写?
【发布时间】:2012-08-07 04:31:18
【问题描述】:

我在应用程序的两端运行使用 SHA-256 的服务 - 一个是服务器端 PHP 实现,另一个是客户端 iOS 实现。两边都使用算法的结果是相同的字母数字字符串,除了所有字母在 iOS 上大写而在 PHP 上小写的事实。它们是相同的字母数字字符串这一事实让我相信 SHA-256 不区分大小写,但我找不到任何支持我的假设的文档。有人可以给我看一些文件来确认吗?

【问题讨论】:

标签: php ios sha256


【解决方案1】:

如果输入的二进制表示在两边相同,则哈希值的二进制表示将相同。十六进制不区分大小写。

【讨论】:

    【解决方案2】:

    所有SHA 系列都是二进制算法,它们对大小写一无所知,因此它们不能不区分大小写。
    您可以简单地在单台机器上使用一个字符串的 2 个输出(不同情况下)进行测试,您可以看到它们提供了不同的结果。
    在您的情况下,我认为如果一切正常,iOS 可能会在手机中显示大写字符串,但在内部传递给您正常(小写)字符串

    【讨论】:

      【解决方案3】:

      像样的加密散列函数不区分大小写,因为这样会更容易产生冲突。输出是另一回事。它基本上是一个大数字(因此大小写 不适用),但为方便起见,它以 16 为基数给出,即使用字母 a 到 f 作为附加数字。十六进制表示法确实不区分大小写,或者至少大写和小写变体都是常见的并且可以识别。没关系,也不会改变表示的数字。

      【讨论】:

        【解决方案4】:

        如果您指的是十六进制字符串输出,那么是的,不区分大小写。它是二进制数据的文本表示。

        http://en.wikipedia.org/wiki/Hexadecimal

        算法本身绝对区分大小写。

        【讨论】:

        • 这是一个相当古老的线程.. 然而,我不确定这是一个清晰的解释。任何文本都是二进制数据表示;但是,不同的注册表(小写或大写)在下面有不同的二进制代码。 T 和 t 是不同的位.. SHA256 区分大小写吗?那么为什么输出字符串不区分大小写呢?您在“算法本身绝对区分大小写”中是什么意思?
        • @GiorgiTsiklauri SHA256 仅适用于二进制数据,它实际上输出二进制数据。稍微阅读一下这个问题,很明显,提问的人看到的是该二进制哈希的十六进制表示。是的,SHA256 完全完全区分大小写。它的输出也是如此,因为它的输出是二进制的。但是如果你将该二进制文件转换为十六进制,则十六进制不区分大小写。
        猜你喜欢
        • 2013-06-27
        • 2011-11-16
        • 1970-01-01
        • 2013-03-16
        • 2023-03-27
        • 2023-03-22
        • 2021-08-22
        • 2011-03-27
        • 2014-01-19
        相关资源
        最近更新 更多