2012-03-13 3 views
0

На моей Blackberry я создаю ключ AES и шифрую данные. Затем я шифрую ключ AES с помощью RSA перед отправкой клиенту C# .netКак передать ключ шифрования AES?

Ключ AES представляет собой массив байтов. Как я могу преобразовать это в строку, чтобы он мог быть зашифрован RSA, а затем расшифрован на стороне .net?

Должен ли я преобразовать в строку?

Я передаю данные через JSON. Наверно, мой вопрос в том, как передать только массив в JSON? Какую кодировку символов я бы использовал?

Спасибо.

+2

См '' функции Convert.ToBase64String' & Convert.FromBase64String'. http://en.wikipedia.org/wiki/Base64 –

+2

RSA шифрует байты, а не строки. – SLaks

ответ

1

Вы можете использовать следующее, которое является безопасным URL и относительно легко визуально проверять. Это занимает немного больше памяти, чем Convert.ToBase64String, но не должно быть проблемой с ключом с фиксированной шириной шифрования.

string MyKey = BitConverter.ToString(MyAESKey); // dash removal is trivial here 

ИЛИ

string MyKey = Convert.ToBase64String(MyAESKey); 

Пример кода

byte[] a = new byte[256/8]; 
Random random = new Random(); 
random.NextBytes(a); 

string base64 = Convert.ToBase64String(a); 
byte [] b = Convert.FromBase64String(base64); 

if (a.SequenceEqual(b)) 
    // true 


string c = BitConverter.ToString(a); 

string[] c1 = c.Split('-'); 
byte[] d = new byte[arr.Length]; 
for (int i = 0; i < arr.Length; i++) d[i] = Convert.ToByte(c1[i], 16); 

if (a.SequenceEqual(d)) 
    // true 
+0

Хм, просто попробовал это, спасибо. Но у меня проблема. Когда я конвертирую свой 256-байтовый массив байтов из java в Base64, он длиннее 256 .. (290 или что-то еще). Но когда я конвертирую его обратно в .NET, он остается такой. Почему это? Благодарю. – conor

+0

Хорошо, но когда я делаю декодер base64, данные не должны быть идентичны перед тем, как они были закодированы? В моем случае это не так, массив байтов декодированных данных длиннее оригинала: -/ – conor

+0

@conor, тогда вы делаете что-то неправильно. –

 Смежные вопросы

  • Нет связанных вопросов^_^