Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#和Python的Base64和SHA256结果不同_C#_Python_Base64_Sha256 - Fatal编程技术网

C#和Python的Base64和SHA256结果不同

C#和Python的Base64和SHA256结果不同,c#,python,base64,sha256,C#,Python,Base64,Sha256,我是一个新手和初学者,因为我的英语不好,我将长话短说,请帮助我 公钥是Base64解码和SHA256。 使用C#和Python(Python结果正确。) 为什么我会得到不同的结果 如果你愿意,我希望通过C#代码得到答案(我的英语很差。) 多谢各位 相同的公钥:(代码)在《代码》中,我发现了一个新的研究项目,一个新的研究项目,一个新的研究项目,一个新的研究项目,一个新的研究项目,一个新的研究项目,一个新的研究项目,一个新的研究项目,一个新的研究项目,一个新的研究项目,一个新的研究项目,一个新的研究

我是一个新手和初学者,因为我的英语不好,我将长话短说,请帮助我

公钥是Base64解码和SHA256。
使用C#和Python(Python结果正确。)
为什么我会得到不同的结果

如果你愿意,我希望通过C#代码得到答案(我的英语很差。)
多谢各位

相同的公钥:(代码)在《代码》中,我发现了一个新的研究项目,一个新的研究项目,一个新的研究项目,一个新的研究项目,一个新的研究项目,一个新的研究项目,一个新的研究项目,一个新的研究项目,一个新的研究项目,一个新的研究项目,一个新的研究项目,一个新的研究项目,一个新的研究项目,一个新的研究项目,一个新的研究项目,一个研究项目,一个新的社区,一个新的研究项目,一个研究项目,一个新的社区,一个社区,一个社区,一个社区,一个社区,一个社区,一个社区,一个社区,一个社区,一个社区,一个社区,一个社区,一个社区,一个社区,一个社区,一个社区,一个社区,一个社区,一个社区,一个社区,一个社区,一个社区,一个社区,一个社区,一个社区2WR2YFFZC8WPYFTS/6eiAde5iVjS2VHqRkmgQvrH794kGUC7ZUitP7p6gYCvhdffqxLQslvga9cPNQIDAQAB

Base64解码==>SHA256

Python

pubkey_der = base64.b64decode(pubKey)  
sha = hashlib.sha256(pubkey_der).hexdigest()
for i in sha:
    print(i),
print('\n'),
结果
890e947269d4e6d9c73883157f65aa6f12e20ad0a05ff518b5f9cb43cea28b89

C#

private void button_go2_Click(object sender, EventArgs e)
{
   string b64 = DecodeBase64(pubKey);
   string result = GetSHA256HashFromString(b64);
}


 private static string DecodeBase64(string pubKey)
        {
            string decode = string.Empty;
            byte[] bytes = Convert.FromBase64String(pubKey);
            decode = Encoding.UTF8.GetString(bytes);
            return decode; 
        }


 public string GetSHA256HashFromString(string strData)
        {
            byte[] bytValue = System.Text.Encoding.UTF8.GetBytes(strData);
            try
            {
                SHA256 sha256 = new SHA256CryptoServiceProvider();
                byte[] retVal = sha256.ComputeHash(bytValue);
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < retVal.Length; i++)
                {
                    sb.Append(retVal[i].ToString("x2"));
                }
                return sb.ToString();
            }
            catch (Exception ex)
            {
                throw new Exception("GetSHA256HashFromString() fail,error:" + ex.Message);
            }
        }
private void按钮\u go2\u单击(对象发送者,事件参数e)
{
字符串b64=DecodeBase64(pubKey);
字符串结果=GetSHA256HashFromString(b64);
}
私有静态字符串DecodeBase64(字符串公钥)
{
string decode=string.Empty;
byte[]bytes=Convert.FromBase64String(pubKey);
decode=Encoding.UTF8.GetString(字节);
返回解码;
}
公共字符串GetSHA256HashFromString(字符串strData)
{
byte[]bytValue=System.Text.Encoding.UTF8.GetBytes(strData);
尝试
{
SHA256 SHA256=新的SHA256CryptoServiceProvider();
字节[]retVal=sha256.ComputeHash(bytValue);
StringBuilder sb=新的StringBuilder();
for(int i=0;i

结果
1eb61f3f380bccf54e61e05cdbe6e14c3871c6c827b33dc03b2cf47c1fc0df4c
我认为你的
DecodeBase64
方法应该返回字节。@t.m.adam是正确的,我会尝试一下
Encoding.UTF8.GetString(字节)可以删除信息。看见因此,一旦base64字符串被解码,就不要重新转换为字符串。只需将
字符串strData
参数更改为
字节[]strData
,并将其传递给
sha256.ComputeHash()
,即
字节[]retVal=sha256.ComputeHash(strData)@t.m.adam谢谢你解决了我的问题。祝你好运!