(РЕДАКТИРОВАТЬ: я предполагал, что вы хотите либо зашифровать строку, а затем кодировать результат как base64, всегда заканчивая с одинаковой длиной вывода. Это будетпомогите, если бы вы могли уточнить вопрос, чтобы подтвердить это, или объяснить, что вы делаете , если это не так.)
Ну, есть довольно простой алгоритм, который будет работать при любой схеме шифрованиякоторый всегда зашифровывает вход фиксированной длины на выход фиксированной длины (а их много):
- Кодирует строку в двоичном виде с использованием UTF-16 (который всегда будет давать одно и то жедлина байтового массива для ввода той же строки)
- Дополнить двоичные данные 32 байтами (т.е. максимальным размером), используя случайные данные
- Добавить дополнительный байт в конце (или начале), указывающийисходная длина
- Шифрование двоичных данных (которые всегда будут 33 байтами)
- Преобразование результата в base64 с использованием
Convert.ToBase64String
Чтобы расшифровать, просто перевернитепроцесс:
- Преобразовать текст base64 в зашифрованные двоичные данные, используя
Convert.FromBase64String
- Расшифровать двоичные данные (обратно в двоичный текст "незашифрованный")
- Найти длину от первого илипоследний байт
- Расшифруйте соответствующий раздел двоичного текста в виде текста UTF-16
(используйте MSDN для поиска деталей каждого шага и не стесняйтесь обращаться за помощью к конкретномучасть.Ваш выбор алгоритма шифрования будет зависеть от того, что вы пытаетесь сделать, и я не являюсь экспертом в этом, я боюсь.)
РЕДАКТИРОВАТЬ: Если вам нужен только хэш, тогда приходят другие вопросыв игру.Хотели бы вы, чтобы одна и та же строка хэшировалась с до одной и той же строки?Обычно это желательно для хеширования, но не для шифрования.