#c#
#c#
Вопрос:
как мне сделать строку base64 аккуратной и упорядоченной?
пример строки abcdefghijklmnopqrstuvwxyz :
YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo =
(неправильно)
YWJjZGVmZ2hpamtsb
W5vcHFyc3R1dnd4eXo =
(справа)
Я преобразую строку в base64 с помощью Convert.ToBase64String (текст), но результаты не аккуратные и очень длинные.
мой код :
public static string encryptText(string text, int keysize, string publickeyxml)
{
var data = algorithm(Encoding.UTF8.GetBytes(text), keysize, publicKeyxml);
return Convert.ToBase64String(data);
}
public static byte[] algorithm(byte[] text, int keysize, string publickeyxml)
{
using (var provider = new RSACryptoServiceProvider(keysize))
{
provider.FromXmlString(publickeyxml);
return provider.Encrypt(text, OAEP);
}
}
string plaintext = "abcdefghijklmnopqrstuvwxyz";
ciphertext = encryptText(plaintext, keysize, publickey);
string ciphertext;
string publickey = "mypublickey"
вывод = kZbKD35 uxg5mhcXjWTmBtF5xhIjIZ0SVbI2bsUHdcO Pe9/n0MSaKcKznNJkR1hxvbCTfBnUnQ5zoLZ9pjW/s99qqPmwsha5EoMIXphljPLVPFA31aB9MKuqyW4rynf8MzR9cDK2N3nfsNnGS54OdnSVmwaS1mYiEP6Fhu2qjFAxwbu6RVyD5yuqYTVDYSxo99P2sJBHrSO2MaNeZSRyPCmu7rTqpZ6zxSVYETGS9Bfc1XbKq/ujA8SZB68Lmy/KTqEqXrGpKcw6vXxAca2phRcT92s70K7zOoF2 L5WrHN8fH9zMXnB64JjARVrNPkTrRPZS1pYu8USZNnla5Qaw==
Комментарии:
1. Определите «аккуратный». В представлении данных на base64 не должно быть разрывов строк, и никто в здравом уме не стал бы пытаться «прочитать» строку на base64. Вы обрабатываете их в программе, поэтому никого не волнует, как они выглядят.
2.
ToBase64String(data, Base64FormattingOptions.InsertLineBreaks)
?3. Обратите внимание, что вы, вероятно, преобразуете не строку в base64, а bytearray, то есть, если вы на самом деле используете приличный алгоритм шифрования.
4. Не смотрите на это, в этом нет смысла.
5. Когда вы кодируете что-либо в base64, это дает один и только один правильный результат. Вы не можете получить другой результат, потому что считаете, что это не аккуратно. Это все равно, что спросить: «Я добавляю 2 числа, но я не думаю, что результат аккуратный. Как я могу сделать ее аккуратной?»
Ответ №1:
Это то, что я имею в виду, спасибо @GSerg
Convert.ToBase64String(data, Base64FormattingOptions.InsertLineBreaks)