Java AES 256加密

我有以下java代码来加密使用64个字符键的字符串。 我的问题是这是AES-256加密吗?

String keyString = "C0BAE23DF8B51807B3E17D21925FADF273A70181E1D81B8EDE6C76A5C1F1716E"; byte[] keyValue = hexStringToByte(keyString); Key key = new SecretKeySpec(keyValue, "AES"); Cipher c1 = Cipher.getInstance("AES"); c1.init(Cipher.ENCRYPT_MODE, key); String data = "Some data to encrypt"; byte[] encVal = c1.doFinal(data.getBytes()); String encryptedValue = Base64.encodeBase64String(encVal); /* Copied the below code from another post in stackexchange */ public static byte[] hexStringToByte(String hexstr) { byte[] retVal = new BigInteger(hexstr, 16).toByteArray(); if (retVal[0] == 0) { byte[] newArray = new byte[retVal.length - 1]; System.arraycopy(retVal, 1, newArray, 0, newArray.length); return newArray; } return retVal; } 

以下是结合divanov和laz的建议后的代码。

 String keyString = "C0BAE23DF8B51807B3E17D21925FADF273A70181E1D81B8EDE6C76A5C1F1716E"; byte[] keyValue = DatatypeConverter.parseHexBinary(keyString); Key key = new SecretKeySpec(keyValue, "AES"); Cipher c1 = Cipher.getInstance("AES"); c1.init(Cipher.ENCRYPT_MODE, key); String data = "Some data to encrypt"; byte[] encVal = c1.doFinal(data.getBytes()); String encryptedValue = Base64.encodeBase64String(encVal); 

是的,64字符是32字节和256位,任何256位序列都可以用作AES-256密钥。

我建议你使用DatatypeConverter.parseHexBinary (或你选择的类似的实用程序)将hex字符串转换为字节数组。