C# 还原Python sha256的 digest() 、hexdigest() 方法

2,375 阅读1分钟

问题大概是皓月我和一个古巴人的代码协调的时候遇到的。
死活没有搞清楚digest()是啥。
网上也没有、然后就摸清楚了


python 的hashlib.sha256(xxx).digest()

其实就是得出sha256之后、digest()就是一个二进制数组对象
相当于C#的byte[]

python代码

    import hashlib
    hash = hashlib.sha256("ABC").digest()

C#代码

        string str = "ABC";
        byte[] bytes = Encoding.UTF8.GetBytes(str);
        byte[] hash = SHA256Managed.Create().ComputeHash(bytes);

python 的 hashlib.sha256(xxx).hexdigest()

其实就是得出sha256之后、hexdigest()就是一个十六进制数组对象
相当于C#的byte[]

Python代码

    import hashlib
    name1 = hashlib.sha256("ABC").hexdigest()

C#

    static void Main(string[] args)
            {
                string str = "ABC";
                str = sha256(str).ToLower();//相当于python     hashlib.sha256(str).hexdigest()
            }
    
            public static string sha256(string data)
            {
                byte[] bytes = Encoding.UTF8.GetBytes(data);
                byte[] hash = SHA256Managed.Create().ComputeHash(bytes);
    
                StringBuilder builder = new StringBuilder();
                for (int i = 0; i < hash.Length; i++)
                {
                    builder.Append(hash[i].ToString("X2"));
                }
    
                return builder.ToString();
    
            }