如何传输AES加密密钥?
问题描述:
在我的黑莓手机上,我正在创建一个AES密钥并对数据进行加密。然后,我在发送到客户端之前使用RSA加密AES密钥c#.net如何传输AES加密密钥?
AES密钥是一个字节数组。我怎样才能将它转换成一个字符串,以便它可以通过RSA加密,然后在.net端解密?
我必须转换为字符串吗?
我通过JSON传输数据。我想我的问题是如何传递一个JSON数组?我将使用什么字符编码?
谢谢。
答
您可以使用以下内容,这是一个安全的URL,并且可以相对容易地进行视觉检查。这需要比Convert.ToBase64String更多的存储空间,但不应该是固定宽度加密密钥的问题。
string MyKey = BitConverter.ToString(MyAESKey); // dash removal is trivial here
OR
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
见'Convert.ToBase64String'&'Convert.FromBase64String'功能。 http://en.wikipedia.org/wiki/Base64 – 2012-03-13 17:26:55
RSA加密字节,而不是字符串。 – SLaks 2012-03-13 18:10:23