在我的应用程序中,我使用AES算法进行WLAN通信,但现在我通过蓝牙传输数据我想获得一些安全性。问题是AES太多而且太重了#34;因为它给了我超过100个字节的块 - 当我传输少于10个字节时 - 如果可能的话,我想使用更轻的东西。
任何人都知道更好的解决方案吗?
答案 0 :(得分:2)
将AES与128位块一起使用。这是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已知存在弱点。