Не могу расшифровать текст, который не заканчивается на "=" - PullRequest
0 голосов
/ 20 декабря 2018

Я могу зашифровать просто отлично.Однако, если зашифрованная строка не заканчивается одинаковой буквой "=" в конце, она не расшифровывается должным образом, и я получаю пустую строку (или так кажется).

Что работает:

+ FMU / RQ5jP86j7F6bPjddA ==

1007 * YQXBLjwEXEGgYz8xnF10O9QqO / vj5DI8PpZZCvfhG1RGHAYumtWrAEBfdSSOkF79vzVCSQ + ejO3uMIDSmY43bw ==

Что не будет работать:

1012

xnyfqPsvrEOK8AoQz2p7AGFHoHncZ / wB / R3qr + scts6nLI2xauWnbmYsXsU3iMoT

функция шифрования:

    public string EncryptionKey = "abc123";


    public string encrypt(string input)
    {           
        byte[] clearBytes = Encoding.Unicode.GetBytes(input);
        using (Aes encryptor = Aes.Create())
        {
            Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
            encryptor.Key = pdb.GetBytes(32);
            encryptor.IV = pdb.GetBytes(16);
            using (MemoryStream ms = new MemoryStream())
            {
                using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateEncryptor(), CryptoStreamMode.Write))
                {
                    cs.Write(clearBytes, 0, clearBytes.Length);
                    cs.Close();
                }
                input = Convert.ToBase64String(ms.ToArray());
            }
        }
        return input;
    }

Вот как эта функция решает 10: 10?

EDIT: добавлена ​​функция шифрования

EDIT 2:

Вот как я вызываю функцию шифрования(прежде чем отправить строку через socket.io)

 ASCIIEncoding aEncoding = new ASCIIEncoding();
 byte[] sendMsg = new byte[1500];
 sendMsg = aEncoding.GetBytes((encrypt(txtMsg.Text)));

1 Ответ

0 голосов
/ 20 декабря 2018

Я не дам вам полного ответа и не прочту лекцию о криптографии, потому что это огромная тема.Ответ на Ваш вопрос прост - он не будет работать без символов «=» или «==» в конце, пока вы используете функцию Convert.FromBase64String, потому что эти символы характерны для этой кодировки.Больше информации по этой ссылке в разделе «Выходные данные»: Base64 в Википедии Вывод: если зашифрованная строка идет с указанными символами, она не может быть расшифрована без нее.

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