我正在使用C#并为字符串计算SHA1.我的问题是,这总是产生纯文本0-1和AZ吗?或者它也会产生具有特殊字符的东西?我的意思是ComputeHash函数在这里将返回纯文本?
SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider();
string receivedValue = BitConverter.ToString(sha1.ComputeHash(to_be_hash)).Replace("-", "");
Run Code Online (Sandbox Code Playgroud)
不确定,但我认为它应该只有在转换为Base 64时才会生成特殊字符.
Cod*_*aos 25
散列API本身返回一个byte[]包含任意20字节序列的API .
您需要自己将其转换为字符串.使用Hex或Base64作为编码是很受欢迎的选择.
BitConverter.ToString()将字符串转换为十六进制,并用字节分隔-.因为你删除了-s,你最终得到一个40个字符的十六进制字符串(0- 9,A- F),它是字母数字字符的子集.
所以你的代码将始终返回一个字母数字字符串,即使SHA-1没有.
SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider();
byte[] hash = sha1.ComputeHash(to_be_hash)
string delimitedHexHash = BitConverter.ToString(hash);
string hexHash = delimitedHexHash.Replace("-", "");
Run Code Online (Sandbox Code Playgroud)
它是一个十六进制字符串,所以只有0-9和AF.
实际上它只是一个字节数组,但是你使用这个string BitConverter.ToString(byte[])方法把它变成一对十六进制字符串,成对的两个用 - (破折号)分隔.
十六进制只包含:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F.16个选项,其中一对将代表单个字节(16*16 = 2 ^ 8 = 256,是单字节).
| 归档时间: |
|
| 查看次数: |
19120 次 |
| 最近记录: |