2012-01-23 12 views
2

私のアプリでは、WLAN通信にAESアルゴリズムを使用しましたが、今はBluetoothを使用してデータを転送していますが、セキュリティを取得したいと考えています。問題は、AESが100バイト以上のブロックを提供するため、AESが「重すぎる」ということです.10バイト未満を転送するときは、可能であれば軽いものを使用したいと思います。ブルートゥース通信用の軽量対称鍵アルゴリズム?

誰かがより良い解決策を知っていますか?

+3

CBC内のAESは、16バイトのブロックにのみパッドします。これは、1メッセージあたり平均8バイトに相当します。どのように100バイトを超えるのですか? – CodesInChaos

+1

CTRモードでAESを使用すると、オーバーヘッドがまったくありません。 – CodesInChaos

+0

+1 for AES-CTR。 –

答えて

2

128ビットブロックのAESを使用してください。それは16バイトです。暗号化の初期化は次のようになります。

//Generate a key 
KeyGenerator KeyGen = KeyGenerator.getInstance("AES"); 
KeyGen.init(128); 
SecretKey Key = KeyGen.generateKey(); 

//Generate init vector 
SecureRandom rng = SecureRandom.getInstance("SHA1PRNG"); 
byte [] IV = new byte[16]; 
rng.nextBytes(IV); 

//Initialize the encryptor 
Cipher ci = Cipher.getInstance("AES/CBC/NoPadding"); //The spec might be different! 
ci.init(Cipher.ENCRYPT_MODE, Key, new IvParameterSpec(IV)); 

RC4には既知の弱点があります。

+0

いつから誰が「壊れた」とみなされますか? –

+0

[Wikipedia](http://ja.wikipedia.org/wiki/Rc4)から:「RC4は、新しいシステムでの使用に反対する弱点がある」詳細が必要な場合は、リンクをクリックしてください。 –

+1

「弱点がある」とは「壊れた」という意味ではありません。 SHA1にも弱点がありますが、何百万もの完全に有効なX.509証明書が存在します。 SHA1とRC4の両方がTLSで広く使用されています。 –

関連する問題