2017-10-02 14 views
0

このJavaコードをC#に変換するにはどうすればよいですか?Java MessageDigestを2つの更新ステートメントでC#に変換する方法

 var hash = HashAlgorithm.Create("SHA-1"); 
     hash.ComputeHash(a); 
     hash.ComputeHash(b); 

しかし、私はComputeHashは実際にバイト[]を返すため、これは正しい方向に向かっているとは思わない:

byte[] a = ...some byte array...; 
    byte[] b = ...some byte array...; 

    MessageDigest m_Hash = MessageDigest.getInstance("SHA-1"); 
    m_Hash.update(a); 
    m_Hash.update(b); 
    byte[] ub = m_Hash.digest(); 

は、これまでのところ私が持っています。

答えて

0

そう...更新はちょうどバイト配列を付加ように見えます...私はこれを行うための機能を書き、それが次のようになります。

var hash = HashAlgorithm.Create("SHA-1"); 
    byte[] ub = hash.ComputeHash(AppendArrays(a, b)); 

    public byte[] AppendArrays(byte[] b1, params byte[][] others) 
    { 
     int n = b1.Length; 
     foreach (var other in others) 
      n += other.Length; 

     var result = new byte[n]; 

     n = 0; 
     Array.Copy(b1, 0, result, n, b1.Length); 
     n += b1.Length; 
     foreach (var other in others) 
     { 
      Array.Copy(other, 0, result, n, other.Length); 
      n += other.Length; 
     } 

     return result; 
    } 
関連する問題