C# 用于C的函数b64_md5

C# 用于C的函数b64_md5,c#,C#,我的一个客户端站点使用 特别是这个功能 function b64_md5(s) { return rstr2b64(rstr_md5(str2rstr_utf8(s))); } 如果要返回字符串MD5哈希的Base64表示形式,则在中是否存在此等效项这将是等效项: public static string GetMD5Base64Hash(string strToHash) { byte[] byteStr = Encoding.UTF8.GetBytes(strToHash);

我的一个客户端站点使用

特别是这个功能

function b64_md5(s)    { return rstr2b64(rstr_md5(str2rstr_utf8(s))); }

如果要返回字符串MD5哈希的Base64表示形式,则在

中是否存在此等效项这将是等效项:

public static string GetMD5Base64Hash(string strToHash)
{
    byte[] byteStr = Encoding.UTF8.GetBytes(strToHash);
    byte[] hashVal = (new System.Security.Cryptography.MD5CryptoServiceProvider()).ComputeHash(byteStr);
    string base64Hash = Convert.ToBase64String(hashVal);
    return base64Hash;
}

有趣的是,对于任何strToHash,返回值将“==”放在字符串的末尾。我指的是填充字节。有没有办法避免它们?@CapsLock:从技术上讲,它们是不需要的,因为你可以计算丢失的字节-我不知道Convert.FromBase64String是否需要它们才能正常工作。如果你使用不同的解码程序,就把它们切掉,然后找出答案!我所做的是返回base64Hash.Replace=,.Trim;不优雅,我认为它可能会失败,但它现在似乎正在工作。您可以使用return base64Hash.TrimEnd'=';但是结果应该是相同的,因为=只用于填充