2016-11-11 14 views
2

私はXamarin Forms XAMLポータブルプロジェクトを持っています。私は文字列からSHA256を取得する必要があります。 System.Security.CryptographyはPCLに存在しないので、私はハッシュを見つけるためにPCLCryptoを使用します。Xamarin PCLCrypto SHA256が異なるハッシュを与える

私は値を比較するためにAPIからsha256を取得します。これはSHA256ハッシュを取得するために使用するメソッドです。

private string getSha256(string data) { 
      byte[] byteData = Encoding.UTF8.GetBytes(data); 
      var hasher = WinRTCrypto.HashAlgorithmProvider.OpenAlgorithm(HashAlgorithm.Sha256); 
      byte[] hash = hasher.HashData(byteData); 
      string hashBase64 = Convert.ToBase64String(hash); 
      return hashBase64; 
     } 

私が使用する文字列は「秘密」です。

http://www.xorbin.com/tools/sha256-hash-calculator 、それが得られます:私はそれをチェックするためにこれを使用

2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b 

をしかし、私は二つの異なるハッシュコードを取得しています:

APIのハッシュ:

2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b PCLCryptoハッシュを私は生成: K7gNU3sdo + OL0wNhqoVWhr3g6s1xYv72ol/pe/Unols =

同じ文字列 'secret'ですが、異なるハッシュを生成しています。私はPCLCryptoハッシュが常に '='で終わっていることにも気付きました。

なぜ異なるのですか?

答えて

1

http://hash.online-convert.com/sha256-generatorのようなコンバータを使用すると、2つのハッシュが同じであることがわかります([テキスト]ボックスに「secret」と入力し、[ファイルを変換]をクリックします)。

'2bb80 ...'文字列はハッシュの16進エンコードで、 'K7gNU ...'文字列はハッシュのベースコード(PCLCryptoへの呼び出しで尋ねたもの)です。問題は、ハッシュ自体がバイナリデータなので、それを表示するには文字列に変換する必要があるということです。これを行うための2つの一般的な方法があります。どちらも同じ基本ハッシュを使用しています。

関連する問題