Как зашифровать строку в c #, но с особым результатом? - PullRequest
0 голосов
/ 07 марта 2019

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

Я тестировал некоторый алгоритм, и в моем случае очень важно, чтобы в выходном результате не было таких символов, как "+" и "=".

Можно ли справиться с этим, если да, какой алгоритм или метод шифрования я могу использовать?

Ответы [ 2 ]

2 голосов
/ 07 марта 2019

Проблема с «+» и «=» заключается в том, что байтовый массив, который у вас есть в результате шифрования, преобразуется в строку Base64 (которой нравятся «=» и «+»).Вместо этого преобразуйте его в шестнадцатеричную строку (где все символы 0-9 и AF).Посмотрите: Как преобразовать массив байтов в шестнадцатеричную строку и наоборот? .

Что касается шифрования ...

Шифрование легко в C # (взгляните на алгоритмы в System.Security.Cryptography).Управление ключами - сложная часть.Вы действительно должны подумать о вашем случае использования.

1 голос
/ 07 марта 2019

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

return encrypted.Replace("\"", "\"\"") // \ -> \\
       .Replace("+", "\"Plus")         // + -> \Plus
       .Replace("=", "\"Eq");          // = -> \Eq

Перед расшифровкой вы должны удалить этот результат:

return escaped.Replace("\"Eq", "=")
       .Replace("\"Plus", "+")
       .Replace("\"\"", "\"");

Где encrypted и escaped также может быть StringBuilder экземпляров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...