ASP. NET Шифрование / дешифрование и кодирование Unicode различных длин строк - PullRequest
0 голосов
/ 04 мая 2020

У меня есть механизм Шифрования и Дешифрования в ASP. NET 4.6 / VB. NET

В Дешифровании я использую .......

        y="zoSObQFhc+GJSUrnAmagZ2/uuunFrCUv" ' String received

        Dim cipherBytes As Byte() = Convert.FromBase64String(y)

        Dim msDecrypt As MemoryStream = New MemoryStream(cipherBytes)
        Dim csDecrypt As CryptoStream = New CryptoStream(msDecrypt, New TripleDESCryptoServiceProvider().CreateDecryptor(Key, IV), CryptoStreamMode.Read)
        Dim fromEncrypt As Byte() = New Byte(cipherBytes.Length - 1) {}
        csDecrypt.Read(fromEncrypt, 0, fromEncrypt.Length)
        Dim x as string = Encoding.Unicode.GetString(fromEncrypt)

Я передал зашифрованную (с переменной y) строку, и результат верный, и вернул в переменную x порядковое слово «процедура» (без кавычек).

Печать x создает «процедуру» (без кавычек) )

Только длина x равна 12.

Теперь, если попытаться проверить

if x = "procedure"....

Проверка неверна.

Где я ошибаюсь?

1 Ответ

0 голосов
/ 05 мая 2020

После применения

System.Text.Encoding.UTF8.GetBytes(x).Select(Function(b) Hex(b)))

Результаты:

Строка Расшифровано: 70 72 6F 63 65 64 75 72 61 0 0 0

Исправлено Строка 70 72 6F 63 65 64 75 72 61

Ниже описан весь процесс до go и обратно (Enc / De c)

Строка для шифрования: процедур

{Bytes Length=18}
   (0): 112    (1): 0    (2): 114    (3): 0   (4): 111    (5): 0    
   (6): 99    (7): 0 (8): 101    (9): 0    (10): 100    
   (11): 0    (12): 117    (13): 0    (14): 114      
   (15): 0    (16): 97    (17): 0

После шифрования

{Bytes  Length=24}
(0): 69 (1): 124 (2): 24 (3): 126
(4): 25 (5): 33 (6): 230 (7): 191 
(8): 101 (9): 220 (10): 115  (11): 122 
(12): 174 (13): 156
(14): 156 (15): 213 (16): 62 (17): 119
(18): 31  (19): 177 (20): 139 (21): 17
(22): 132  (23): 88

После Convert.ToBase64String:

RXwYfhkh5r9l3HN6rpyc1T53H7GLEYRY

Полученная строка для расшифровки

RXwYfhkh5r9l3HN6rpyc1T53H7GLEYRY

Dim cipherBytes As Byte() = Convert.FromBase64String(Data)

>? cipherBytes

{Bytes Length=24}
    (0): 69    (1): 124    (2): 24    (3): 126
    (4): 25    (5): 33    (6): 230    (7): 191
    (8): 101    (9): 220    (10): 115    (11): 122
    (12): 174    (13): 156    (14): 156    (15): 213
    (16): 62    (17): 119    (18): 31    (19): 177
    (20): 139    (21): 17    (22): 132    (23): 88

После расшифровки

{Bytes Length=24}
    (0): 112 (1): 0 (2): 114    (3): 0    (4): 111    (5): 0
    (6): 99    (7): 0    (8): 101    (9): 0    (10): 100    (11): 0
    (12): 117    (13): 0    (14): 114    (15): 0    (16): 97    (17): 0
    (18): 0   (19): 0    (20): 0   (21): 0    (22): 0    (23): 0

Расшифрованная строка процедур

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...