从Base64编码字符串
的前10个字符生成密钥比方说,我有一个Base64编码字符串:从Base64编码字符串
data = AOUTl5C2QV2xFRPlzKR0Ag==
我想生成该Base64编码字符串的前10个字符中的Java(Android版)密钥然后将其用于AES解密从服务器发送的消息。要做到这一点,我用下面的代码:
String firstTen = data.substring(0, 10);
byte[] decodedBytes = Base64.decode(firstTen, Base64.DEFAULT);
SecretKeySpec key = new SecretKeySpec(decodedBytes, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] original = cipher.doFinal(Message_to_Decrypt, Base64.DEFAULT));
但我可以一Java.security.Exception:
java.security.InvalidKeyException: Key length not 128/192/256 bits.
有没有一种方法,我可以得到一个有效的密钥,我可以使用从Base64String的前10个字符进行AES解密?
错误消息说:密钥长度不是128/192/256位。
您正在使用10个字符,每个字符都是8位。所以10 * 8 = 80。试用16个字符(128/8 = 16)。
但我没有16个字符,是否有一个参数可以通过,以便它会自动扩展到16个字符,我被告知只需要使用前10个字符 – Gravity
您试图解密某些已经加密,所以你不能为密钥制定规则。如果他们在填充密钥或其他内容,您可能需要检查谁在进行加密。 – gfelisberto
Base64是什么类?在java.util.Base64或org.apache.commons.codec.binary.Base64中没有Base64.DEFAULT。 – gfelisberto
我在Android中执行此操作 – Gravity
developer.android.com/reference/android/util/Base64.html – Gravity