SHA-256 是否不区分大小写


Is SHA-256 Case Insensitive?

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

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

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

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

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

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

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