Шифрование 3000 байтов и более с DES3 - PullRequest
0 голосов
/ 23 февраля 2012

Я пытаюсь зашифровать данные с помощью DES3:

private byte[] EncryptKey(byte[] wrappedKey)
    {
        MemoryStream ms = new MemoryStream(wrappedKey);
        TripleDESCryptoServiceProvider cryptoProvider = new TripleDESCryptoServiceProvider();
        cryptoProvider.Key = transportKeyBytes; //key
        cryptoProvider.Padding = PaddingMode.None;
        cryptoProvider.Mode = CipherMode.ECB;

        CryptoStream cs = new CryptoStream(ms, cryptoProvider.CreateEncryptor(), CryptoStreamMode.Read);
        StreamReader sr = new StreamReader(cs);
        byte[] key = new Byte[wrappedKey.Length];
        cs.Read(key, 0, wrappedKey.Length);
        cs.Close();
        ms.Close();

        return key;
    }

Но я получаю сообщение об ошибке:

Length of the data to encrypt is invalid.

Какой максимальный размер данных может быть зашифрован?

1 Ответ

3 голосов
/ 23 февраля 2012

Вы не используете какие-либо отступы.Это, вероятно, причина вашей ошибки.Не добавляя никаких отступов, вы можете зашифровать только точное количество 8-байтовых блоков.Измените отступы на PKCS # 5 для DES.

Режим ECB небезопасен.См. Википедию (буквальную) иллюстрацию.Вместо этого используйте режим CBC или CTR.

3DES устарел.Если вам не нужно использовать его для совместимости со старой системой, используйте вместо него AES.

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