Search code examples
c#cryptographyaesblackberry-jde

How to transmit an AES encryption key?


On my Blackberry I am creating an AES key and encrypting data. I am then encrypting the AES key with RSA before sending to the client c#.net

The AES key is a byte array. How can I convert this to a string so that it can be encrypted by RSA and then decrypted on the .net side?

Do I have to convert to string?

I am transmitting the data via JSON. I guess my question is really how to transmit a but array in JSON? What character encoding would I use?

Thanks.


Solution

  • You can use the following, which is URL safe and relatively easy to visually inspect. This takes a little more storage than Convert.ToBase64String, but shouldn't be an issue with a fixed width encryption key.

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

    OR

    string MyKey = Convert.ToBase64String(MyAESKey);
    

    Code Sample

    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