2012-01-29 113 views
0

我想使用SHA1散列文件。结果如下所示:B7-DB-B9-93-E7-2F-6F-EB-6D-CD-CC-A8-DE-D2-F1-01-6E-8A-53-BC替换方法不会替换破折号为空字符串

如何将短划线替换为空字符串或仅删除它们?

代码试图替换破折号,但它似乎并没有改变任何东西,破折号仍然存在。

using (HashAlgorithm hashSHA1 = new SHA1Managed()) 
using (Stream file = new FileStream(ofdBrowse.FileName, FileMode.Open, FileAccess.Read)) 
{ 
    byte[] hash = hashSHA1.ComputeHash(file); 

    txtSHA1.Text = BitConverter.ToString(hash).Replace("-", ""); 
} 
+0

什么是txtSHA1?任何方式试图将代码分成几个位。 'txtSHA1.Text = BitConverter.ToString(hash).Replace(“ - ”,“”); '变成'var a = BitConverter.ToString(hash);''var b = a.Replace(“ - ”,“”);' 'txtSHA1.Text = b;' – Nahum 2012-01-29 09:05:34

+0

@Nahum Litvin,这似乎不起作用。这很奇怪。 – HelpNeeder 2012-01-29 09:11:23

+0

好的,解决了。原因?我的愚蠢。大声笑 – HelpNeeder 2012-01-29 09:14:22

回答

2

您添加了代码给绝对删除破折号。短,但完整的程序,以证明:

using System; 
using System.IO; 
using System.Security.Cryptography; 

class Test 
{ 
    static void Main(string[] args) 
    { 
     using (HashAlgorithm hashSHA1 = new SHA1Managed()) 
     { 
      // Actual data doesn't matter 
      using (Stream data = new MemoryStream()) 
      { 
       byte[] hash = hashSHA1.ComputeHash(data); 

       Console.WriteLine(BitConverter.ToString(hash).Replace("-", "")); 
      } 
     } 
    } 
} 

所以,你的问题的潜在原因:

  • 你没有运行,你以为你是
  • 你有其他代码构建这确实散列但Replace呼叫
  • 您正在寻找在UI :)
的错误位

很难真正猜出哪些(或其他)是问题,但该代码不是它...

+0

嗯,我必须有一些错误的话。我会仔细检查。 – HelpNeeder 2012-01-29 09:01:57

+0

好吧,这很奇怪。当我在'InitializeComponents()'后面'txtSHA1.Text =“test”;'时,我看到正确的行。但是当我做'txtSHA1.Text =“tesy”+ BitConverter.ToString(hash).Replace(“ - ”,string.Empty);'text'test'不包含在文本框中。 – HelpNeeder 2012-01-29 09:08:04

+0

好吧,我想我确实犯了一个错误。不管怎么说,还是要谢谢你。我有同样的方法两次..大声笑 – HelpNeeder 2012-01-29 09:13:51

相关问题