C# Base64字符串编码包含+、/和=而不是A、B、C

C# Base64字符串编码包含+、/和=而不是A、B、C,c#,encoding,base64,C#,Encoding,Base64,我需要对字符串应用以下转换: 转换字节[]中的字符串 应用sha256函数 在base64中对结果进行编码 我编写了以下代码: string codeRaw = "C0643778W.EUC06AG978W.EUFWELP2014-11-2153.50000GBP24.00000MWh/h10YCB-EUROPEU--12015-01-012015-01-31"; byte[] utiCodeByteArr = Encoding.UTF8.GetBytes(codeRaw); byte[] ha

我需要对字符串应用以下转换:

转换字节[]中的字符串 应用sha256函数 在base64中对结果进行编码 我编写了以下代码:

string codeRaw = "C0643778W.EUC06AG978W.EUFWELP2014-11-2153.50000GBP24.00000MWh/h10YCB-EUROPEU--12015-01-012015-01-31";
byte[] utiCodeByteArr = Encoding.UTF8.GetBytes(codeRaw);
byte[] hashByteArr = new SHA256Managed().ComputeHash(utiCodeByteArr);
string hash = Convert.ToBase64String(hashByteArr)

它可以工作,但结果与我应该得到的结果有点不同:字符串包含字符“+”、“/”和“=”,而不是“a”、“B”和“C”

"qWAIh1CgYAuvoRTGcvXKLBHC9UxRunSBRjRXlqhYh6gC" //expected result
"qW+Ih1CgYAuvoRTGcvXKLBHC9UxRunS/RjRXlqhYh6g=" //got result
我已经解决了一个替换问题

 string hash = Convert.ToBase64String(hashByteArr)?.Replace("+", "A")?.Replace("/", "B")?.Replace("=", "C");
有一种更好的方法可以在不使用替换的情况下获得正确的字符串? 我不喜欢他们

包含需求的手册中说:使用的API是.NET framework提供的API,但它不包含源代码:也许有一种方法可以立即获得ABC字符,但我错过了


谢谢。

提供商向我发送了源代码:有一个与我所做的相同的替换


他们忘了在手册中写这些信息。

结果与我应该得到的结果有点不同。您是如何弄清楚应该得到什么的?手册说,使用.NET API我应该得到这个结果的。有一些源字符串示例具有预期的结果。不管怎样,正如我所说,我不知道是否真的有办法获得ABC证书。但是API使用的是.NET framework提供的句子,这让我怀疑是什么让你认为Base64字符串只包含字母字符ABC等等?从基64开始,从零开始按升序依次为大写字符A到Z、小写字符A到Z、数字0到9以及符号+和/。无值字符=,用于尾随填充。好的:在这种情况下,我将保留替换:-非常感谢。