社内アプリを .Net 3.5 から 4 に更新したばかりで、文字列のエンコーディングに問題があります。レジストリに追加する文字列があります。これは (バイト配列として) 暗号化され、エンコーディング windows-1252 を使用して文字列に変換されます。
レジストリから引き出したら、長さをテストします。VB.net 3.5.Length
を使用すると 23 になります。.Net 4 を使用すると 35 になります。.Net 4 バージョンはより長くなりますが、最後に余分な null 文字があります。これは、復号化プロセスの仕組みに影響を与えます。デフォルトのテキストエンコーディングなどに何か変更がありましたか?
.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)
したがって、私の最も簡単な解決策は、文字列を追加するときにパディングを取り除くことですが、なぜ違うのかについて何か考えはありますか?