c# 与 PHP中 SHA1加密结果不同解决措施

那天在调试API的当儿,发现用c#形容的SHA1加密出来的结果跟PHP中sha1()出来的匪等同,找了一半天之缘故后来才做出来

当调节微信接口的时刻差不多的拉文档都是供的凡PHP的主意,所以于.net中落实之时光会起多的题材,最突出的就是token通不了证明

今天提供一个结果以及Php一样 的SHA1法

        public static string Sha1Sign(string data)
        {
            byte[] temp1 = Encoding.UTF8.GetBytes(data);
            SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider();
            byte[] temp2 = sha.ComputeHash(temp1);
            sha.Clear();
            // 注意, 不能用这个
            // string output = Convert.ToBase64String(temp2);// 不能直接转换成base64string
            var output = BitConverter.ToString(temp2);
            output = output.Replace("-", "");
            output = output.ToLower();
            return output;
        }

 

解决办法:在php中sha1出来的凡小写字母,可是以c#中默认出来的凡大写,在token验证的时光吗是分别轻重缓急写的,另外多丁当

            // string output = Convert.ToBase64String(temp2);// 不能直接转换成base64string
            var output = BitConverter.ToString(temp2);

  这里犯了错误也直接没有发觉,所以找了老悠久的由 

 

PS:

于送及一个Php的

base64_encode的c#实现

        public static string Base64_encode(string data)
        {
            return Convert.ToBase64String(Encoding.UTF8.GetBytes(data));
        }

  

 

相关文章