0

vb.net と 2.0 Framework で開発された古い Web アプリケーションがあります。アプリケーションは、Windows レジストリに格納されている暗号化された SQL サーバー名の情報を読み取ります。このコード行になると

ConnectionStr = Encoding.ASCII.GetString(plainText)

文字列内に疑問符が表示されます

「P??ARSMEYVDE02」

そしてそれはあるべきです

「PLWARSMEYVDE02」

エンコードを UTF8、デフォルト、または Unicode に変更しようとしましたが、うまくいきませんでした。ここに関数があります

Public Function HostLogOnParameters() As Boolean
Try
    Dim rk As RegistryKey = Registry.LocalMachine.OpenSubKey(ConfigurationSettings.AppSettings("Registry.LocalMachine") & "Host", False)
    Dim ConnectionStr As String = rk.GetValue("1")
    Dim initVector As String = rk.GetValue("2")
    Dim strKey As String = rk.GetValue("3")
    Dim dec As New Decryptor
    dec.Decryptor(EncryptTransformer.EncryptionAlgorithm.TripleDes)
    dec.IV = Convert.FromBase64String(initVector)
    'Decrypt the string
    Dim plainText As Byte() = dec.Decrypt(Convert.FromBase64String(ConnectionStr), Convert.FromBase64String(strKey))
    ConnectionStr = Encoding.ASCII.GetString(plainText)
    ConnectionStr = ConnectionStr.Substring(1)
    mstrServer = Left(ConnectionStr, InStr(ConnectionStr, "'") - 1)
    ConnectionStr = ConnectionStr.Substring(mstrServer.Length + 3)
    mstrDatabase = Left(ConnectionStr, InStr(ConnectionStr, "'") - 1)
    ConnectionStr = ConnectionStr.Substring(mstrDatabase.Length + 3)
    mstrUser = Left(ConnectionStr, InStr(ConnectionStr, "'") - 1)
    ConnectionStr = ConnectionStr.Substring(mstrUser.Length + 3)
    mstrPassvord = Left(ConnectionStr, InStr(ConnectionStr, "'") - 1)
    Return True
Catch ex As Exception
    Return False
End Try
End Function

プレーンテキストからの 16 進数としての出力。

2750CCD74152534D45595644455630325C44455656533032272C2745594372797374616C486F73744244272C274372797374616C486F737455736572272C273132337265706F7274696E6721402327

4

1 に答える 1

0

それはおそらくラテン語 (ISO 8859-1) です。なぜなら、それはPÌ×ARSMEYVDEV02\DEVVS02であり、ピクサーはもちろん有名な会社だからです。Windows-1252 は、この文字エンコーディングのスーパーセットであることに注意してください。

于 2013-12-01T21:18:10.230 に答える