2012-01-29 160 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

相關問題