Преобразование строки в байтовый массив для API Crypto - PullRequest
1 голос
/ 26 января 2012

В этой статье объясняется, почему не следует использовать строковое кодирование для обхода зашифрованного текста.Однако, если я попытаюсь использовать рекомендованный Convert.ToBase64String, я получу исключение, если исходная строка не упакована с 4-байтовыми блоками.В следующем примере исходная строка не работает, а работает только «Zoidberg», поскольку она имеет длину 8 байт (которые упакованы в 6-байтовый массив при использовании Convert.ToBase64String).

Как и было обещано в статье, если я использую какую-либо строку Encoding, я получаю ошибку «Bad Data» при расшифровке значения обратно.Итак, как исходная строка должна передаваться в крипто-API в виде байтового массива? string text = "Zoidberg is important!"; RSACryptoServiceProvider provider = new RSACryptoServiceProvider(); // This throws FormatException: "The input is not a valid Base-64 string as it // contains a non-base 64 character, more than two padding characters, // or a non-white space character among the padding characters" byte[] cipherText = provider.Encrypt(Convert.FromBase64String(text), false); string plainText = Convert.ToBase64String(provider.Decrypt(cipherText, false));

1 Ответ

0 голосов
/ 26 января 2012

Я думаю, что вы были введены в заблуждение этой статьей. Нет смысла конвертировать из string -> byte[] --> encrypted byte[] --> string, что показывает вам эта статья , чтобы не делать .

Предположительно, вы хотите перейти string -> byte[] -> encrypted byte[] -> (network, whatever) -> encrypted byte[] -> byte[] -> string. Хорошо использовать Encoding для преобразования строки в байты таким образом.

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

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

...