C# - 将长度为128的字符串转换为64字节的数组,以与SHA-512的64字节数组进行比较

时间:2013-11-28 05:37:28

标签: c# security hash bytearray sha

我正在尝试获取64字节的哈希密码数组,以便我可以将其与盐渍和哈希(SHA-512)密码相匹配。

我目前使用VARCHAR(128)将散列密码存储在MySql数据库中。

所以我在数据库中存储 406f2c25c99fa980992a9704878072485bcca1316b46b3d6a05bbe468a87a8bda82db6ea44a95746d96519a296463175c8a584e49b86d94bd4a542ac03fb6dd7

当我使用C#将该值检索为String时,其长度为128。 我已经尝试了几个Encodings来从该字符串中获取字节数组,但我从来没有得到一个64字节,甚至尝试将它与盐渍和散列密码的64字节数组匹配。

与SHA-256有同样的问题(无法获得32字节数组)。

非常感谢!

1 个答案:

答案 0 :(得分:0)

你是对的,SHA-512返回64字节的值。但是,在您的数据库中,您要存储该64字节值的十六进制字符串表示,这需要两倍的字节。

例如,考虑具有值为255的单个字节的情况。作为无符号整数,255可以存储在一个字节中,但十六进制字符串表示(FF)需要2个字节。