我知道如何在C#中将字符串转换为byte [].在这种特殊情况下,我正在使用HMAC-SHA256密钥的字符串表示.假设我从OpenID OP得到的这个密钥的字符串表示是:
"81FNybKWfcM539vVGtJrXRmoVMxNmZHY3OgUro8+pZ8="
Run Code Online (Sandbox Code Playgroud)
我将它转换为byte [],如下所示:
byte[] myByteArr = Encoding.UTF8.GetBytes("81FNybKWfcM539vVGtJrXRmoVMxNmZHY3OgUro8+pZ8=");
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是它似乎丢失了原始数据.如果我从上一步获取字节数组并将其转换回字符串,则它与原始字符串不同.
string check = Convert.ToBase64String(myByteArr);
Run Code Online (Sandbox Code Playgroud)
检查最终是:
"ODFGTnliS1dmY001Mzl2Vkd0SnJYUm1vVk14Tm1aSFkzT2dVcm84K3BaOD0="
Run Code Online (Sandbox Code Playgroud)
这显然与我开始使用的原始字符串表示不同.
使用加密密钥,始终使用Convert.FromBase64String
和Convert.ToBase64String
.这样你就可以采用标准方式,并且不会因编码问题而丢失字节.Base 64字符串可能不是空间有效的,但它是许多方案中存储和传输密钥的首选方法.
这是一个快速验证:
byte[] myByteArr = Convert.FromBase64String("81FNybKWfcM539vVGtJrXRmoVMxNmZHY3OgUro8+pZ8=");
string check = Convert.ToBase64String(myByteArr);
Console.WriteLine(check);
// Writes: 81FNybKWfcM539vVGtJrXRmoVMxNmZHY3OgUro8+pZ8=
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2829 次 |
最近记录: |