我刚刚将一个内部应用程序从 .Net 3.5 更新到 4。我在字符串编码方面遇到了一些问题。我有一个要添加到注册表的字符串。它被加密(作为字节数组),然后使用编码 windows-1252 转换为字符串。
当我将其从注册表中拉出时,我会测试长度。使用 VB.net 3.5.Length
给我 23。使用 .Net 4 我得到 35。.Net 4 版本更长,但最后只有额外的空字符。这对解密过程的工作方式产生了影响。默认文本编码有什么变化吗?
.Net4 如下。.Net 3.5 版本相同,但没有填充 0
(0): 13
(1): 49
(2): 27
(3): 42
(4): 102
(5): 77
(6): 178
(7): 197
(8): 98
(9): 198
(10): 240
(11): 79
(12): 171
(13): 216
(14): 82
(15): 55
(16): 24
(17): 134
(18): 117
(19): 97
(20): 223
(21): 69
(22): 149
(23): 0
(24): 0
(25): 0
(26): 0
(27): 0
(28): 0
(29): 0
(30): 0
(31): 0
(32): 0
(33): 0
编辑:
所以注册表的输入有填充。似乎从注册表中获取它会导致不同的字符串。
我正在使用它从 Reg 中获取它:
Dim regKey As Microsoft.Win32.RegistryKey
regKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(//Location, False)
val = poKey.GetValue(name)
所以我最简单的解决方案是在我添加字符串时去掉填充,但是关于它为什么不同的任何想法?