私のアプリでは、WLAN通信にAESアルゴリズムを使用しましたが、今はBluetoothを使用してデータを転送していますが、セキュリティを取得したいと考えています。問題は、AESが100バイト以上のブロックを提供するため、AESが「重すぎる」ということです.10バイト未満を転送するときは、可能であれば軽いものを使用したいと思います。ブルートゥース通信用の軽量対称鍵アルゴリズム?
誰かがより良い解決策を知っていますか?
私のアプリでは、WLAN通信にAESアルゴリズムを使用しましたが、今はBluetoothを使用してデータを転送していますが、セキュリティを取得したいと考えています。問題は、AESが100バイト以上のブロックを提供するため、AESが「重すぎる」ということです.10バイト未満を転送するときは、可能であれば軽いものを使用したいと思います。ブルートゥース通信用の軽量対称鍵アルゴリズム?
誰かがより良い解決策を知っていますか?
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には既知の弱点があります。
いつから誰が「壊れた」とみなされますか? –
[Wikipedia](http://ja.wikipedia.org/wiki/Rc4)から:「RC4は、新しいシステムでの使用に反対する弱点がある」詳細が必要な場合は、リンクをクリックしてください。 –
「弱点がある」とは「壊れた」という意味ではありません。 SHA1にも弱点がありますが、何百万もの完全に有効なX.509証明書が存在します。 SHA1とRC4の両方がTLSで広く使用されています。 –
CBC内のAESは、16バイトのブロックにのみパッドします。これは、1メッセージあたり平均8バイトに相当します。どのように100バイトを超えるのですか? – CodesInChaos
CTRモードでAESを使用すると、オーバーヘッドがまったくありません。 – CodesInChaos
+1 for AES-CTR。 –