SHA1纯文本? C#.NET
我正在使用C#并为字符串计算SHA1。 我的问题是,这总是会产生纯文本0-1和AZ吗? 或者它也会产生具有特殊字符的东西? 我的意思是ComputeHash函数在这里会返回纯文本吗?
SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider(); string receivedValue = BitConverter.ToString(sha1.ComputeHash(to_be_hash)).Replace("-", "");
不确定,但我认为它应该只有在转换为Base 64时才会生成特殊字符。
它是一个hex字符串,所以只有0-9和AF。
实际上它只是一个字节数组,但你使用string BitConverter.ToString(byte[])
方法将它变成一对hex字符串,两对分隔一个 – (破折号)。
hex只包含:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F。16个选项,其中一对将代表单个字节(16 * 16 = 2 ^ 8 = 256,是单字节)。
散列API本身返回一个包含任意20字节序列的byte[]
。
您需要自己将其转换为字符串。 使用Hex或Base64作为编码是很受欢迎的选择。
BitConverter.ToString()
将字符串转换为hex,其字节由-
分隔。 因为你删除了-s,你最终会得到一个40个字符的hex字符串( 0
– 9
, A
– F
),它是字母数字字符的子集。
所以你的代码总是返回一个字母数字字符串,即使SHA-1
没有。
上述就是C#学习教程:SHA1纯文本? C#.NET分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider(); byte[] hash = sha1.ComputeHash(to_be_hash) string delimitedHexHash = BitConverter.ToString(hash); string hexHash = delimitedHexHash.Replace("-", "");
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1021303.html