我似乎正在努力使用此代码,如果有人可以提供帮助,我们将不胜感激。
我在web.config文件中有一串数据,格式如下:1,3,5,7,9,11,15,17,19。
我需要将数据传递到:private static readonly byte[] Entropy
,但我一直收到错误:数据无效
如果我使用以下内容:
private static readonly byte [] Entropy = {1,3,5,7,9,11,15,17,19}; 它工作正常,所以我的问题似乎是转换string into byte []。
我在很多网站上搜索过这个问题(下面是几个)
C# convert string into its byte[] equivalent
Converting string to byte array in C#
http://www.chilkatsoft.com/faq/dotnetstrtobytes.html
但似乎没有任何效果。
如上所述,我们将不胜感激。
private static readonly string WKey = ConfigurationManager.AppSettings["Entropy"];
private static readonly byte[] Entropy = WKey;
public static string DecryptDataUsingDpapi(string encryptedData)
{
byte[] dataToDecrypt = Convert.FromBase64String(encryptedData);
byte[] originalData = ProtectedData.Unprotect(dataToDecrypt, Entropy, DataProtectionScope.CurrentUser);
return Encoding.Unicode.GetString(originalData);
}
乔治
答案 0 :(得分:1)
你可以:
string Entropy = "1, 3, 5, 7, 9, 11, 15, 17, 19";
var parts = Entropy.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
byte[] bytes = Array.ConvertAll(parts, p => byte.Parse(p));
byte.Parse
将“吃掉”并忽略空格。请注意,您不能使用十六进制样式编号(AB
,但不能使用0x
,因此不能使用0xAB
)。你需要:
byte[] bytes = Array.ConvertAll(parts, p => byte.Parse(p, NumberStyles.HexNumber));
但是它不接受非十六进制数字: - )