C# FromBase64String не работает из-за неизвестного UNICODE

У меня есть зашифрованная база данных, в которой строки представляют собой значения, подобные приведенным ниже:

ù¢=~Òñ€Ï?-pJ´’ˆò»Æ8- skYIÞµ§¬†Œ‚„Šçç

XwÚûùÖP^opJ´’ˆò»Æ8- skYIÞµ§¬†Œ‚„Šçç

ö‘±_| Çúùß^_f9´’ˆò»Æ8- skYIÞµ§¬†Œ‚„Šçç

Я пытаюсь расшифровать информацию разными способами (это симметричное шифрование, и у меня есть ключ, но я не знаю алгоритма, подробнее здесь Как расшифровать строку, зашифрованную V FoxPro)

Когда я пробовал разные способы дешифрования с помощью C#.NET на шаге, я получаю сообщение об ошибке, говорящее, что «строка имеет символ, отличный от base64» в следующей строке:

Convert.FromBase64String(input)

Где input — это строка, похожая на ту, которую я разделяю выше.

Как я могу получить такую ​​​​строку из БД, чтобы работать с ней на С#?


person Fabian Angeloni    schedule 04.03.2015    source источник
comment
Вы должны узнать, что такое кодировка Base64. Похоже, вы только что скопировали + вставили какой-то код, не понимая его. строки выше явно не закодированы в base64.   -  person Blorgbeard    schedule 04.03.2015
comment
Я знаю, что это не Base64... По этой причине я задаю этот вопрос. Итак, вы знаете, что такое кодировка?   -  person Fabian Angeloni    schedule 05.03.2015
comment
Тогда почему ты Convert.FromBase64String(input)? В любом случае, если вы не знаете алгоритма шифрования, у вас проблемы посерьезнее, чем с кодировкой.   -  person Blorgbeard    schedule 05.03.2015
comment
Без какого-либо кода (как вы получили эти данные) вопрос остается без ответа. Ваша «строка» на самом деле не строка, это, вероятно, byte[]   -  person Henk Holterman    schedule 07.03.2015


Ответы (1)


Я обычно использую что-то вроде этого:

public static class EncryptDecryptString
{
    public static string Encrypt(string input, string key)
    {
        byte[] inputArray = UTF8Encoding.UTF8.GetBytes(input);
        TripleDESCryptoServiceProvider tripleDES = new TripleDESCryptoServiceProvider();
        tripleDES.Key = UTF8Encoding.UTF8.GetBytes(key);
        tripleDES.Mode = CipherMode.ECB;
        tripleDES.Padding = PaddingMode.PKCS7;
        ICryptoTransform cTransform = tripleDES.CreateEncryptor();
        byte[] resultArray = cTransform.TransformFinalBlock(inputArray, 0, inputArray.Length);
        tripleDES.Clear();
        return Convert.ToBase64String(resultArray, 0, resultArray.Length);
    }

    public static string Decrypt(string input, string key)
    {
        byte[] inputArray = Convert.FromBase64String(input);
        TripleDESCryptoServiceProvider tripleDES = new TripleDESCryptoServiceProvider();
        tripleDES.Key = UTF8Encoding.UTF8.GetBytes(key);
        tripleDES.Mode = CipherMode.ECB;
        tripleDES.Padding = PaddingMode.PKCS7;
        ICryptoTransform cTransform = tripleDES.CreateDecryptor();
        byte[] resultArray = cTransform.TransformFinalBlock(inputArray, 0, inputArray.Length);
        tripleDES.Clear();
        return UTF8Encoding.UTF8.GetString(resultArray);
    }

}
person zXSwordXz    schedule 04.03.2015
comment
У меня было что-то подобное, но метод расшифровки не работает в следующей строке: Convert.FromBase64String(input); потому что зашифрованный текст не является Base64String - person Fabian Angeloni; 05.03.2015