2012-03-13 6 views
0

私のブラックベリーでは、AESキーを作成してデータを暗号化しています。次に、クライアントに送る前にRSAでAESキーを暗号化しています。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 

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 
+0

うーん、ちょうどそれを試みた、ありがとう。しかし、私は問題があります。 256要素のバイト配列をjavaからBase64に変換すると、256よりも長くなります(290か何か)。しかし、.NETでそれを元に戻すと、その長さにとどまります。何故ですか?ありがとう。 – conor

+0

しかし、base64デコードを行うとき、データがエンコードされる前と同じであってはなりませんか?私の場合、デコードされたデータバイトの配列は元のものより長くなります: -/ – conor

+0

@conorそれでは、何か間違っています。 –