2012-09-19 12 views
7

Tôi đã tạo một băm SHA-256 một chiều đơn giản trong WinRT hôm nay và nhận ra nó không hoạt động. Tôi đã làm một xác nhận và dường như nhận điều này:Làm thế nào để tạo các băm SHA-256 trong WinRT?

◦API System.Security.Cryptography.SHA256Managed trong mscorlib, PublicKeyToken = b77a5c561934e089 không được hỗ trợ cho các ứng dụng loại này. CryptoWinRT.exe gọi API này. ◦API System.Security.Cryptography.HashAlgorithm trong MSCORLIB, PUBLICKEYTOKEN = B77A5C561934E089 không được hỗ trợ cho ứng dụng này loại. CryptoWinRT.exe gọi API này. ◦API System.Security.Cryptography.SHA256Quản lý. # Ctor trong MSCORLIB, PUBLICKEYTOKEN = B77A5C561934E089 không được hỗ trợ cho ứng dụng này loại. CryptoWinRT.exe gọi API này. ◦API System.Security.Cryptography.HashAlgorithm.ComputeHash (System.Byte []) trong MSCORLIB, PUBLICKEYTOKEN = B77A5C561934E089 không được hỗ trợ cho loại ứng dụng này. CryptoWinRT.exe gọi API này.

Thay thế cho điều này là gì? Và tại sao một thứ tầm thường như vậy lại không được phép trong WinRT?

+0

Duplicate của [Làm thế nào để thực hiện một băm SHA512 trong C++ WinRT?] (Http://stackoverflow.com/questions/12355417/how-do-i-perform-a-sha512-hash-in- c-winrt) (Thuật toán băm khác nhau, nhưng câu trả lời là như nhau.) –

Trả lời

17

Tính năng này có phù hợp với bạn không?

private void HandleHashClick(object sender, RoutedEventArgs e) 
    { 
     // get the text... 
     var inputText = this.textInput.Text; 

     // put the string in a buffer, UTF-8 encoded... 
     IBuffer input = CryptographicBuffer.ConvertStringToBinary(inputText, 
      BinaryStringEncoding.Utf8); 

     // hash it... 
     var hasher = HashAlgorithmProvider.OpenAlgorithm("SHA256"); 
     IBuffer hashed = hasher.HashData(input); 

     // format it... 
     this.textBase64.Text = CryptographicBuffer.EncodeToBase64String(hashed); 
     this.textHex.Text = CryptographicBuffer.EncodeToHexString(hashed); 
    } 
+0

Tôi thực sự đã kết thúc thực hiện gần như chính xác điều này. Tôi chưa bao giờ quay lại đây và đăng câu trả lời – Earlz