什么是255的SHA-1?

时间:2011-11-11 12:02:02

标签: utf-8 sha1

假设您有一个sha-1算法,它接受文本作为输入而不是字节数组。 (例如,有一些像这样的Javascript库。)

如果要将sha-1应用于文本(假设文本是密码),则首先执行utf-8编码,因为文本可以包含多字节字符。换句话说,文本中字符的相应整数值可以大于8位字节可以容纳的值。由于sha-1算法适用于8位单元,因此有助于首先在utf-8中对文本进行编码。

我的问题是: 如果你有一个非文本二进制数据,其中每个字节的值在0到255之间,你是否仍然希望在将它传递给sha-1算法之前对二进制数据进行utf-8编码?我知道当值介于0和127之间时,utf-8根本不会修改数据。

但是,如果值介于128和255之间,则UTF-8会修改此类数据。

总之,这是我的问题:包含值255(全1)的字节的SHA-1是什么?

With UTF-8 encoding:    730cf30d408ecf51aad876f5c491f837f7ddea4c

Without UTF-8 encoding: 85e53271e14006f0265921d02d4d736cdc580b0b

哪一个是正确的?

1 个答案:

答案 0 :(得分:6)

不,不要UTF-8编码二进制数据,这没有任何意义。如果你想要一个二进制数据的哈希,你应该SHA-1 完全相同,而不是那些数据的随机转换。

你不应该UTF-8编码字符串,除非你想要的是该字符串的 UTF-8表示的SHA-1