так, в принципе, вы не знаете о шифровании и есть проблема, что ваш клиент хочет шифрования
ок, быстрый HeadsUp:
кодирование: преобразование вход на выход, который содержит идентичную информацию, но в другом представлении ... ех: 1,2,3 -> а, Ь, с
, как вы можете видеть, что вывод выглядит по-разному, но имеет ту же самую информацию
пожалуйста, обратите внимание, что никакой секретной информации не надо шифровать/де Код
шифрования: может выглядеть на первый взгляд, но здесь нужны некоторые секреты ... шифрование занимает 2 входа ... секретные и входные данные
полученный вывод может быть расшифрованы, но только если у вас есть соответствующий секрет
Если ваш клиент хочет, чтобы вы что-то зашифровали, убедитесь, что вещь может быть представлена в виде байтов ... шифрование строки ... не хорошо ... шифрование строки, которая была преобразована в < вставить произвольное байтовое кодирование здесь, например unicode> ... ok
e ncryptions обычно обрабатывают байт (давайте не будем заботиться о исторических шифров здесь)
, когда вы решите для шифрования/шифровать вы должны знать, что есть по существу две различные группы: symetric и Асимметричная
symetric: тот же ключ (прочитайте секрет), который вы используете для шифрования, потребуется для дешифрования
асимметричный: существуют ключевые пары, состоящие из открытой и закрытой частей (общедоступный/закрытый ключ), для использования которой используется открытая часть, частная часть используется для дешифрования ...не имеет смысла, если вы не имеете разные партии, которые должны обмениваться ключами
асимметричных шифров, как правило, используется для шифрования расшифровки ключей для symetric шифров, потому что они медленны, а symetric шифры обычно БЫСТРО
асимметричных шифров не предназначены для шифровать большие объемы данных
symetric шифры предназначены для объемных данных
если ваша цель просто сохранить информацию, зашифрованную в то время как она лежит вокруг на жестком диске, symetric шифра является то, что вы хотите
вам понадобится ключ для шифрования, который будет работать ... и ... у вас возникнет проблема с его хранением ... так что если вы можете, введите пользователя достаточно сложным паролем ... используйте пароль и функцию PBKDF2 с достаточно большим количеством итераций (достаточно высокий = увеличить это число до тех пор, пока процесс не займет всего несколько секунд, если вам нужно только это при запуске, или пока ваши пользователи не начнут жаловаться на задержку), чтобы сделать двоичный ключ из пароль.
использовать этот ключ для AES в режиме GCM (symetric шифр)
шифр будет хотеть что-то под названием IV или вектор инициализации ...
ХВ не секрет, вы можете предварять эту вещь к вашему ciphertext как текстовая информация iv должен быть размером одного блока вашего шифра, поэтому в случае AES 128 бит = 16 байт , поэтому ваш IV при шифровании является 16-байтовым (уникальным) случайным числом (это означает, что вы не может использовать IV раз в два или более: продолжать использовать IV и при получении нового, проверить, если он уже сохранен, если да, то начальное поколение IV, если нет, сохраните его, а затем используйте i т)
при расшифровке, читать предваряется читаемых IV из файла (первый 16 байт)
, если вы просто хотите сохранить шифрованный на диске, записать его в бинарный файл
, если файл должен содержать только печатный текст, применяя кодировку типа base16/32/64, прежде чем записывать свои байты в файл и декодировать в массив байтов перед расшифровкой (если ваши данные слишком велики для этого, тогда вам придется найти/написать поток обертка, которая добавит/разделит кодировку для вас)
В чем проблема? Какое исключение? Где исключение? – nicomp
Base64 - это кодировка, а не шифрование. Если вы хотите получить текстовое представление зашифрованных байтов, base64 - хороший способ его кодирования. – shmosel
Я знаю, я пытаюсь получить кодировку, но теперь мне нужно сделать шифрование – Moon