Как я могу установить ключ и вектор при шифровании? - PullRequest
2 голосов
/ 29 июня 2011

Я использую следующий код.Ключ и вектор копируются из Интернета.Там нет никаких секретов.

    private static byte[] key = { 123, 217, 19, 11, 24, 26, 85, 45, 114, 184, 27, 162, 37, 112, 222, 209, 241, 24, 175, 144, 173, 53, 196, 29, 24, 26, 17, 218, 131, 236, 53, 209 };
    private static byte[] vector = { 146, 64, 191, 111, 23, 3, 113, 119, 231, 121, 221, 112, 79, 32, 114, 156 };
    private ICryptoTransform encryptor, decryptor;
    private UTF8Encoding encoder;

    public SimplerAES()
    {
        RijndaelManaged rm = new RijndaelManaged();
        encryptor = rm.CreateEncryptor(key, vector);
        decryptor = rm.CreateDecryptor(key, vector);
        encoder = new UTF8Encoding();
    }

Может кто-нибудь объяснить, в чем смысл настроек ключа и вектора.Я хотел бы конфиденциально закодировать способ шифрования моих данных, но я не уверен, с чего начать.

Спасибо,

Ответы [ 2 ]

3 голосов
/ 29 июня 2011

Ключ - это просто ваш ключ шифрования, ключевая фраза, необходимая для расшифровки данных. AES является симметричным шифром, поэтому один и тот же ключ будет использоваться как для шифрования, так и для дешифрования.

Вектор инициализации (IV) является технической деталью: при использовании блочного шифра в режиме CBC шифротекст для каждого входного блока зависит от зашифрованный текст для предыдущего блока ввода (а также, конечно, для текущего блока ввода и ключа). Однако при попытке зашифровать первый блок «предыдущие» данные не принимаются во внимание; в этом случае IV заменяет зашифрованный текст для «0-го» блока ввода.

На практике это означает, что при расшифровке также необходимо знать IV помимо ключа . Однако IV не является конфиденциальной информацией, и вы можете просто сохранить ее вместе с зашифрованным текстом (таким образом, сделав ключ единственной информацией, которую вам нужно расшифровать, которой у вас еще нет).

Примечание: Хорошей практикой является не использовать один и тот же IV несколько раз ; вы можете просто генерировать случайное значение каждый раз, когда вам нужно что-то зашифровать.

0 голосов
/ 29 июня 2011

Проверьте, что следующие сайты должны помочь.

Шифрование 1

Шифрование 2

Шифрование 3

...