繁体   English   中英

如何将字节数组转换为保留小写的字符串?

[英]How to convert a byte array into a string that preserves lowercase?

我试图将字节数组从 hash function 转换为字符串,我首先使用了bitconverter.tostring()但它只是创建了一个所有大写字节由破折号分隔的字符串

这是我的基本方法

public string Hash(string password)
    {
        using var hasher = SHA512.Create();
        {
            var asBytes = Encoding.Default.GetBytes(password);
            var hashed = hasher.ComputeHash(asBytes);
            string stringhashed = BitConverter.ToString(hashed);
            return stringhashed;
        }
    }

output 哈希正确,但是它被格式化为BYTE-BYTE-BYTE-BYTE-BYTE .... 而我需要 output 是一个普通的字符串,小写和所有。 有没有办法将字节数组转换为满足这些要求的字符串?

使用String.Replace()String.ToLower()BitConverter.ToString()修改字符串 output :

return stringhashed.Replace("-", "").ToLower();

...或实现您自己的字符串化扩展方法:

public static class BitUtils {
    public static string ToHexString(this byte[] bytes)
    {
        StringBuilder sb = new StringBuilder(bytes.Length * 2);
        foreach(byte b in bytes)
        {
            // use the `x` format string to get lowercase hexadecimal
            sb.AppendFormat("{0:x2}", b);
        }

        return sb.ToString();
    }
}

所以你可以这样做:

return asBytes.ToHexString();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM