2017-12-02 26 views
0

これは私のJavaコードです。C#MD5ハッシングはJava MD5と同じではありません

byte[] bytes = { 0x35, 0x24, 0x76, 0x12 }; 
    MessageDigest m = MessageDigest.getInstance("MD5"); 
    byte[] digest = m.digest(bytes); 

C#

byte[] bytes = { 0x35, 0x24, 0x76, 0x12 }; 
MD5 md5 = new MD5CryptoServiceProvider(); 
byte[] result = md5.ComputeHash(bytes); 

私は、誰かが感謝..

結果が

..です説明することができ、私はJavaで新しいです、結果のバイトが異なっていることに気づきましたc#

[ 58, 74, 139, 3, 244, 223, 176, 230, 227, 252, 130, 221, 54, 159, 112, 239] 

java

[ 58, 74,-117, 3, -12, -33, -80, -26, -29, -4,-126, -35, 54, -97, 112, -17] 
+0

[58、74、-117、3、-12、-33、-80、-26、-29、-4、-126、-35、54、-97、112、-17] の場合C# –

+0

o) –

+0

Javaバイト型についてのドキュメントをよく読んで理解してください。https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html –

答えて

1

すべての正の値が同じであることがわかります。負のものだけが異なっています。 .net byte typeでは符号なしのため、範囲は0〜255です。Javaでは、バイト型の範囲は-128〜127です。You can read it here

のJavaについて
+0

私はC#のバイトをキーとして使用して、javaはそれを解読できないだろうか?生産が異なるため。私はこのシステムの限界にぶつかったのですか? –

+0

この質問を見てください:[https://stackoverflow.com/questions/17754262/c-sharp-unsigned-bytes-encryption-to-java-signed-bytes-decryption]。たぶんそれは、使用された暗号化アルゴリズムをdepensしかし、私はC#で暗号化されているものをjavaアプリケーションで何かを解読することができると思う。 –

関連する問題