java和C#中的Sha 256获得了不同的值 [英] Sha 256 in java and C# are getting different values

查看:857
本文介绍了java和C#中的Sha 256获得了不同的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

其实我有一个java代码,我需要转换为c#







java code



 salt =  ; 


MessageDigest messageDigest = MessageDigest.getInstance( SHA-256);
messageDigest.update(salt.getBytes());
result = new BigInteger(messageDigest.digest());

结果= - 8679331902525424680818339047284551675590913508739318217139721412571178967790





和我试图转换为c#



我尝试过:



 rawData =  ; 

使用(SHA256 sha256Hash = SHA256.Create())
{
var Rawdatabytes = System.Text.Encoding.ASCII.GetBytes(rawData);
byte [] bytes = sha256Hash.ComputeHash(Rawdatabytes);
var result = new System.Numerics.BigInteger(bytes);

}

result = 8306751456257555796593622157661757526221618682565362023319192974333645213676



<对于java和c#,

得到不同的结果
可以帮助我们解决问题



for java code我们得到负值而对于c#我们得到正
请任何人都知道解决方案

解决方案

< blockquote>首先,确保将相同的输入值传递给两个代码。

然后,如果结果仍然不同,则根据已知的工作程序(例如在线程序)验证它们以查找哪一个坏了。


我运行了两个简单的测试,证明相同的源文本在C#和Java中都产生相同的哈希值。


c#和java中的Biginteger



我在这篇博客中得到了答案..


Actually i have a java code whic i need to convert to c#



java code

salt="40be4e59b9a2a2b5dffb918c0e86b3d75727a8f82b898d65cf87017309818b35f5c07a364ee3e7117730058065c1bad8a43491dc6549e17b6b0c85b144ada408ca7a1e8c7505e41f91e5d0f37996fa1dd54e68160fb44631f7d5cfec517bcacf4a8a0b2ed3321d881ce224060b4c22c6d97461595d6e8d604a1c41f646adb19c06f8398c1b8ceeb9d1f090aa67cfe5b31b0741a407e93c92e421f759d475e70cc306bb88f0678921eaaacf10da4f5cdada4d288514aae58c06ae5f752ae814e321d2dcbd5cf6e1621e6f154fc88d6cfe31bdc17d94595f038874ffaebad9656f3278b2694c439cbb263494b76b8b4ed81547aae71a98a722448fe11cd348d4f2e4123b42bac43c64b378914536e8b352";


    MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
    messageDigest.update(salt.getBytes());
    result=new BigInteger(messageDigest.digest());

result=-8679331902525424680818339047284551675590913508739318217139721412571178967790



and i tried to convert to c#

What I have tried:

rawData="40be4e59b9a2a2b5dffb918c0e86b3d75727a8f82b898d65cf87017309818b35f5c07a364ee3e7117730058065c1bad8a43491dc6549e17b6b0c85b144ada408ca7a1e8c7505e41f91e5d0f37996fa1dd54e68160fb44631f7d5cfec517bcacf4a8a0b2ed3321d881ce224060b4c22c6d97461595d6e8d604a1c41f646adb19c06f8398c1b8ceeb9d1f090aa67cfe5b31b0741a407e93c92e421f759d475e70cc306bb88f0678921eaaacf10da4f5cdada4d288514aae58c06ae5f752ae814e321d2dcbd5cf6e1621e6f154fc88d6cfe31bdc17d94595f038874ffaebad9656f3278b2694c439cbb263494b76b8b4ed81547aae71a98a722448fe11cd348d4f2e4123b42bac43c64b378914536e8b352";

using ( SHA256 sha256Hash = SHA256.Create())
	{             
	 var Rawdatabytes = System.Text.Encoding.ASCII.GetBytes(rawData);
	 byte[] bytes = sha256Hash.ComputeHash(Rawdatabytes);              
	 var result = new System.Numerics.BigInteger(bytes);
         
	}

result=8306751456257555796593622157661757526221618682565362023319192974333645213676



for both java and c# are getting different result 
can any one help us to solve the issue

also

for java code we are getting negative value and for c# we are getting positive
please can any one know the solution

解决方案

First, make sure you are passing the same input values to both the codes.
Then if the result are still different, validate them against a known working program (e.g. an online one) to find out which one is broken.


I have run two simple tests that demonstrate that the same source text produces the same hash value in both C# and Java.


Biginteger in c# and java

i got the answer in this blog..


这篇关于java和C#中的Sha 256获得了不同的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆