Обзор алгоритмов шифрования: классификация и распространенные алгоритмы
Обзор алгоритмов шифрования: классификация и распространенные алгоритмы

1️⃣Классификация алгоритмов шифрования.

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

1. Симметричное шифрование и асимметричное шифрование.
  • Симметричное шифрование(Symmetric Шифрование): шифрование и дешифрование используют один и тот же ключ. Этот метод шифрования работает быстро, но распределение ключей и управление ими затруднены. Обычное Симметричное шифрованиеалгоритмиметьAES、DES、3DES и т. д.
  • Нет Симметричное шифрование(Asymmetric Шифрование): используйте пару ключей, а именно открытый ключ и закрытый ключ. Открытый ключ используется для шифрования данных, а закрытый ключ используется для расшифровки данных. Несимметричное шифрование Безопасность выше, но скорость шифрования и дешифрования относительно медленная. Обычное несимметричное алгоритм шифрования включает RSA, ECC (шифрование эллиптической кривой) и т. д.
2. Блочное шифрование и шифрование потока.
  • блочное шифрование(Block Шифр): Разделение открытого текста на блоки фиксированного размера, каждый блок шифруется независимо. блочное шифрованиеалгоритм Подходящийшифрование Многоданные,общийблочное шифрованиеалгоритмиметьAES、DESждать。
  • шифрование потока(Stream Шифр): Побайтовое или побитовое шифрование открытого текста. шифрование потокалгоритм подходит для шифрования потоковых данных, например, для связи в реальном времени. Общее шифрование потокаалгоритмиметьRC4ждать。
3. Обратимое и необратимое шифрование.
  • Обратимое шифрование(Reversible Шифрование): Зашифрованный текст после шифрования может быть восстановлен до исходного открытого текста путем расшифровки алгоритма. Симметричное шифрование和Нет Симметричное шифрование Все принадлежат Обратимое шифрование。
  • Нет Обратимое шифрование(Irreversible Шифрование): Зашифрованный текст после шифрования не может (или чрезвычайно сложно) быть восстановлен до исходного открытого текста с помощью алгоритма дешифрования. Обычное не Обратимое шифрованиеалгоритм имеет серии MD5, SHA и т. д., которые обычно используются для проверки целостности данных и хранения паролей.
Вставьте сюда описание изображения
Вставьте сюда описание изображения

2️⃣Общие алгоритмы шифрования

1. AES(Advanced Encryption Standard)

Алгоритм шифрования AES — это широко используемый алгоритм симметричного шифрования, который предоставляет три варианта длины ключа: 128 бит, 192 бита и 256 бит для адаптации к различным потребностям безопасности. В процессе шифрования AES открытый текст делится на блоки фиксированного размера, и для шифрования каждого блока используется ключ. Поскольку алгоритм AES обладает преимуществами высокой эффективности, безопасности и гибкости, он широко используется в различных сценариях безопасности, таких как сетевая связь, хранение данных и т. д.

В Java шифрование и дешифрование AES можно реализовать с помощью класса javax.crypto.Cipher. Вам необходимо указать алгоритм шифрования, режим работы, метод заполнения и другие параметры, а также предоставить ключ и вектор инициализации (IV) для выполнения операций шифрования и дешифрования.

2. RSA(Rivest-Shamir-Adleman)

RSA — это классический алгоритм асимметричного шифрования, обеспечивающий безопасность, основанную на сложности задач декомпозиции большого числа. В алгоритме шифрования RSA открытый ключ используется для шифрования данных, а закрытый ключ используется для расшифровки данных. Из-за математической связи между открытым и закрытым ключами только закрытый ключ может расшифровать данные, зашифрованные открытым ключом, и наоборот. Таким образом, алгоритм RSA очень безопасен.

В Java вы можете использовать класс java.security.KeyPairGenerator для генерации пар ключей RSA и класс javax.crypto.Cipher для операций шифрования и дешифрования. Следует отметить, что алгоритм шифрования RSA имеет низкую производительность при обработке больших объемов данных, поэтому его обычно используют для шифрования небольших объемов данных или для цифровых подписей и других сценариев.

3. ECC(Elliptic Curve Cryptography)

ECC — это технология шифрования с открытым ключом, основанная на математике эллиптических кривых. По сравнению с RSA, ECC требует более короткой длины ключа, обеспечивая при этом те же характеристики безопасности, поэтому шифрование и дешифрование выполняются быстрее. Это делает ECC более подходящим для сред с ограниченными ресурсами, таких как мобильные устройства и встроенные системы.

В Java для поддержки алгоритма шифрования ECC можно использовать сторонние библиотеки, такие как Bouncy Castle. Эти библиотеки предоставляют богатые API и классы инструментов, что позволяет относительно легко реализовать шифрование и дешифрование ECC в Java.

4. DES (стандарт шифрования данных) и 3DES.

DES — это старая версия Симметричного. шифрованиеалгоритм,Он использует 56-битный ключ для шифрования 64-битного открытого текста. Однако,Поскольку длина ключа DES короче,Уязвимы к атакам грубой силы,Поэтому это уже не Безопасность. В целях повышения безопасности,люди поднялиАлгоритм шифрования 3DES,Он выполняет три операции DESшифрования открытого текста, используя три разных ключа. Это увеличивает длину ключа и сложность алгоритма.,Тем самым повышая безопасность секса.

Хотя 3DES более безопасен, чем DES, из-за более медленной скорости шифрования и дешифрования и более сложного управления ключами, AES обычно является лучшим выбором в некоторых сценариях с высокими требованиями к производительности и безопасности.

5. Алгоритм хеширования и алгоритм кода аутентификации сообщения (MAC).

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

5.1. Алгоритм хеширования (например, серии MD5, SHA).

Алгоритмы хеширования отображают сообщения произвольной длины в хэш-значения фиксированной длины. Алгоритм хэширования необратим, то есть исходные данные невозможно восстановить по значению хеш-функции. Это делает алгоритмы хеширования очень полезными в таких сценариях, как хранение и проверка паролей. Распространенные алгоритмы хеширования включают MD5, SHA-1, SHA-256 и т. д. Однако следует отметить, что доказано, что MD5 и SHA-1 имеют уязвимости безопасности, поэтому в сценариях, требующих высокого уровня безопасности, следует использовать более безопасные алгоритмы хеширования (такие как SHA-256 или SHA-3).

В Java хеш-значения можно рассчитать с помощью класса java.security.MessageDigest. Вам необходимо указать используемый алгоритм хеширования и предоставить необработанные данные, на основе которых будет рассчитываться значение хеш-функции. Затем класс MessageDigest вычислит соответствующее значение хеш-функции и вернет его вам.

5.2. Алгоритм кода аутентификации сообщения (MAC) (например, HmacMD5, HmacSHA1 и т. д.).

Алгоритм кода аутентификации сообщения (MAC) использует ключ и сообщение для генерации значения MAC фиксированной длины. Алгоритм MAC обычно используется для проверки целостности и подлинности сообщений. В отличие от алгоритмов хеширования, алгоритмам MAC требуется ключ для генерации значения MAC. Это означает, что только тот, кто знает ключ, может проверить целостность и подлинность сообщения. Общие алгоритмы MAC включают HmacMD5, HmacSHA1 и т. д. Эти алгоритмы сочетают в себе хеш-функции и криптографию ключей для обеспечения большей безопасности. В Java вы можете использовать класс javax.crypto.Mac для реализации операций расчета и проверки алгоритма MAC. Вам необходимо указать используемый алгоритм MAC, предоставить ключ и данные сообщения, а также вызвать соответствующие методы для создания или проверки значения MAC.

3️⃣Выбор алгоритма шифрования

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

  1. Для сценариев, требующих большого объема шифрования и высоких требований к производительности, можно выбрать Симметричное. шифрованиеалгоритм(нравитьсяAES)。Симметричное Алгоритм шифрования и скорость дешифрования высоки, подходят для обработки больших объемов данных. Однако вам необходимо обратить внимание на распределение ключей и управление ими, чтобы гарантировать подлинность ключей.
  2. Для сценариев, в которых распределение ключей и управление ими затруднены, можно выбрать несимметричное шифрованиеалгоритм(нравитьсяRSA)。Нет Симметричное Алгоритм шифрования использует открытые ключи и закрытые ключи для выполнения операций шифрования и дешифрования. Открытый ключ может распространяться публично, а закрытый ключ хранится у самого пользователя. Это снижает риск компрометации ключей. Однако несимметричное Алгоритм шифрования и скорость дешифрования медленны и не подходят для обработки больших объемов данных. Поэтому в практических приложениях Симметричное обычно шифрованиеалгоритм和Нет Симметричное Используйте в сочетании с шифрованием для достижения большей стабильности и производительности. Например, вы можете использовать несимметричное шифрованиеалгоритм Приходитьшифрование Симметричное ключ шифрованияалгоритма (называемый сеансовым ключом), а затем используйте Симметричное Алгоритм шифрования приходит к шифрованию фактических данных. Таким образом, вы можете воспользоваться Симметричное. Высокопроизводительные функции шифрованияалгоритма могут обеспечить безопасность ключа.
  3. Для сценариев, когда вам необходимо проверить целостность и подлинность сообщения, вы можете выбрать алгоритм хеширования или метод кода аутентификации сообщения (MAC). Хэш-метод может использоваться для генерации цифрового отпечатка (значения хеш-функции) данных, используемого для проверки целостности данных; MAC-алгоритм может использоваться для генерации кода аутентификации (значения MAC) сообщения, используемого для проверки подлинности и целостность сообщения. Этот алгоритм может помочь вам гарантировать, что данные не были подделаны или подделаны во время передачи и хранения.
  4. При выборе алгоритма шифрования вам также необходимо учитывать такие факторы, как гибкость, производительность и совместимость алгоритма. Вам следует выбирать алгоритм, который был широко проверен и признан, и избегать использования алгоритма, который, как доказано, имеет уязвимости безопасности (например, MD5, SHA-1 и т. д.). В то же время также необходимо сосредоточиться детали реализации алгоритма шифрования и возможные уязвимости безопасности для обеспечения безопасности данных.
  5. Наконец, важно отметить, что шифрованиеалгоритм является лишь одним из средств обеспечения безопасности данных. В практических приложениях также необходимо сочетать другие меры безопасности (такие как контроль доступа, аутентификация, резервное копирование данных и т. д.) для совместного обеспечения безопасности.

4️⃣Резюме

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

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose