Есть два предложения, которые говорят:
1) Алгоритмы и структуры данных являются важной частью программирования. Если вы потеряете алгоритмы и структуры данных, вы потеряете все.
2) Программирование - это алгоритмы и структуры данных, а алгоритмы и структуры данных являются душой программирования.
Обратите внимание, что это не то, что я сказал, это было обобщено бесчисленными программистами. Это очень реалистично и проницательно. Если вы хотите постоянно развиваться в течение длительного времени, все равно необходимо изучать больше алгоритмов. Сегодня я расскажу вам об алгоритмах симметричного шифрования в алгоритмах шифрования, и здесь я научу вас программированию и использованию симметричных алгоритмов шифрования. Он включает в себя три алгоритма симметричного шифрования: DES, 3DES и AES, и полон практической информации.
1. Алгоритм симметричного пароля
Алгоритм симметричной криптографии является наиболее широко используемым и чаще всего используемым алгоритмом шифрования сегодня. Он используется не только в индустрии программного обеспечения, но и популярен в аппаратной индустрии. Все виды инфраструктур будут приоритетными для симметричных алгоритмов шифрования, когда они связаны с потребностями в безопасности.
Ключ шифрования и ключ дешифрования симметричного алгоритма криптографии одинаковы. Для большинства алгоритмов симметричной криптографии процесс шифрования и дешифрования обратно связан.
(1) Модель общения зашифровать и расшифровать
(2) Особенности: открытый алгоритм, небольшой объем расчетов, быстрая скорость шифрования, высокая эффективность шифрования
(3) Слабость: обе стороны используют один и тот же ключ, а безопасность не гарантируется
Существует два типа симметричных паролей: транслируйте пароль и пароль пакета, но теперь обычно используется пароль блока:
(4) Блок пароля работающего режима
1) ECB: Электронный Cipherbook (наиболее часто используется, каждое шифрование генерирует независимые пакеты зашифрованного текста и не будет влиять на другие пакеты зашифрованного текста, то есть тот же открытый текст генерируется после шифрования)
2) CBC: ссылка на зашифрованный текст (обычно используется. Перед шифрованием на открытом тексту вам необходимо выполнить операцию XOR с предыдущим зашифрованным текстом, то есть различные зашифки генерируются после того же шифрования открытого текста)
В дополнение к этим двум обычно используемым рабочим режимам, есть:
3) CFB: обратная связь с паролем
4) OFB: выходная обратная связь
5) CTR: счетчик
Эти пять рабочих режимов в основном применяются алгоритмами в криптографии при выполнении расчетов деривации.
6. Как заполнить пароли блоков
1) nopadding: нет заполнения
2) PKCS5Padding:
3) ISO10126Padding:
7. Обычно используемые симметричные пароли:
1) DES (стандарт шифрования данных, стандарт шифрования данных)
2) 3DES (Triple DES, DESEED, Triple DES Algorithm)
3) AES (Стандарт расширенного шифрования, расширенный стандарт шифрования данных, алгоритм AES может эффективно противостоять алгоритмам атаки против DES)
Давайте сначала посмотрим на простое сравнение этих трех алгоритмов:
| алгоритм | Длина ключа | Длина ключа по умолчанию | Рабочий режим | Метод заполнения |
|---|---|---|---|---|
| Дрес | 56 | 56 | ECB, CBC, PCBC, CTR, CTS, CFB, CFB8-CFB128, OFB, OFB8-OF128 | Nopadding, PKCS5Padding, ISO10126Padding |
| 3des | 112, 168 | 168 | ECB, CBC, PCBC, CTR, CTS, CFB, CFB8-CFB128, OFB, OFB8-OF128 | Nopadding, PKCS5Padding, ISO10126Padding |
| Аэс | 128, 192, 256 | 128 | ECB, CBC, PCBC, CTR, CTS, CFB, CFB8-CFB128, OFB, OFB8-OF128 | Nopadding, PKCS5Padding, ISO10126Padding |
Давайте посмотрим, как использовать три алгоритма DES/3DES/AES для реализации симметричного шифрования:
2. DES Algorithm
1.DES: Стандарт шифрования данных, типичный алгоритм в области симметричных алгоритмов шифрования
2. Особенности: ключ короткий (56 бит), короткий жизненный цикл (избегая растрескивания)
3. Реализация Java
1) Создать ключ
Keygenerator keygen = keygenerator.getInstance ("des"); // генератор ключей keygen.init (56); // инициализируя генератор ключей secretkey QuareKey = keygen.GenerateKey (); // Сгенерировать байт ключа [] key = secretKey.getEncoded (); // Байт -массив2) шифрование
SecretKey secretKey = new SecretKeySpec (Key, «des»); // восстановить ключ шифр Cipher = cipher.getInstance ("des"); // Cipher завершает шифрование или расшифровки рабочего класса. cipher.dofinal (data); // шифрует данные3) дешифрование
SecretKey SecretKey = New SecretKeySpec (Key, «des»); // восстановить ключ шифр Cipher = cipher.getInstance ("des"); // Cipher завершает шифрование или расшифровку рабочего класса Cipher.init (cipher.decrypt_mode, секрет); // инициализирует Cipher, decrypts -режим byte [] cshherte [] ciSherte [] csherbete); cipher.dofinal (data); // расшифровывает данныеМы можем обнаружить, что мы просто устанавливаем разные режимы для шифрования и дешифрования.
3.3des алгоритм
1,3DES: увеличить длину ключа до 112 или 168 бит и повысить безопасность за счет увеличения количества итераций.
2. Недостатки: медленная скорость обработки, длительное время расчета ключа и низкая эффективность шифрования
3. Реализация Java
1) Создать ключ
Keygenerator keygen = keygenerator.getinstance ("desede"); // генератор ключей keygen.init (168); // Длина ключа может быть указана как 112 или 168, а по умолчанию составляет 168. SecretKey SecretKey = keyGen.GenerateKey (); // генерировать ключ байт [] key = secretKey.getEncoded (); // массив байтов ключа2) 3DES шифрование
SecretKey secretKey = new SecretKeySpec (Key, "deseed"); // восстановить ключ шифр Cipher = cipher.getInstance ("desede"); // Цифр завершает шифрование или дешифрование рабочего класса Cipher.init (cipher.Encrypt_mode, секретный секрета cipher.dofinal (data); // шифрует данные3) 3DES Decryption
SecretKey secretKey = new SecretKeySpec (Key, "deseed"); // восстановить ключ шифр Cipher = cipher.getInstance ("desede"); // Цифр завершает шифрование или дешифрование рабочего класса Cipher.init (cipher.decrypt_mode, secretkey);/инициализирует Cipher, Decrypte -byte byte byte [cipte xiphte [cipte uephte [ciphte) ciphte [ciphte); cipher.dofinal (data); // расшифровывает данные4. Алгоритм AES (рекомендуется)
1.AES: Стандарт расширенного шифрования данных, способный эффективно противостоять всеми известным атакам против алгоритмов DES
2. Особенности: короткое время создания ключей, хорошая чувствительность, низкие требования к памяти и высокая безопасность
3. Реализация Java
1) Создать ключ
Keygenerator keygen = keygenerator.getinstance ("aes"); // генератор ключей keygen.init (128); // по умолчанию 128, после получения разрешений на политику, это может быть 192 или 256SecretKey SecretKey = keyGen.GenerateKey (); // генерировать ключ -байт [] key = secretKey.getEncoded (); // массив байтов Key Byte2) AES шифрование
SecretKey secretKey = new SecretKeySpec (Key, "aes"); // Ключ восстановления Cipher Cipher = Cipher.getInstance ("aes"); // шифр завершает шифрование или дешифрование рабочего класса Cipher.init (cipher.Encrypt_mode, секретный) ;// Инициализирует Cipher, decryptse -byte byte [] ciphte). cipher.dofinal (data); // шифрует данные3) DEES Decryption
SecretKey secretKey = new SecretKeySpec (Key, "aes"); // восстановить ключ шифр Cipher = cipher.getInstance ("aes"); // шифр завершает шифрование или дешифрование рабочего класса Cipher.init (cipher.decrypt_mode, секретный) ;/ инициализирует Cipher, decrypte -byte byte byte [cipte) ciphte [ciphte). cipher.dofinal (data); // расшифровывает данныеДля удобства использования я написал классы инструментов для алгоритмов DES/3DES/AES, адрес: адрес загрузки (новый класс DES/3DES/AES Tool).
На этом этапе три алгоритма DES/3DES/AES выполняются для реализации симметричного шифрования. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать wulin.com больше.