如果包含在JSP中,下面的代码片段运行正常,但是当我尝试从类文件中引用相同的代码时,我得到“.class
文件中的错误版本号”异常。
解密的Java代码
import java.security.Key;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class Decrypt256bit {
private static Key key;
private static Cipher cipher;
static {
key = new SecretKeySpec("P@ssw0Rd!@#**&&&P@ssw0Rd!@#**&&&".getBytes(), "AES");
try {
cipher = Cipher.getInstance("AES/ECB/PKCS5PADDING","SunJCE");
} catch (Exception e) {
e.printStackTrace();
}
}
public static String encryptData(String plainText) {
try {
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encrypted = cipher.doFinal(plainText.getBytes());
return new BASE64Encoder().encode(encrypted);
} catch (Exception e) {
throw new IllegalArgumentException(e);
}
}
//For testing purpose - to be deleted
public static String decryptData(String encryptedValue) {
try {
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] decordedValue = new BASE64Decoder().decodeBuffer(encryptedValue);
int maxKeyLen = Cipher.getMaxAllowedKeyLength("AES");
System.out.println("Length==="+maxKeyLen);
return new String(cipher.doFinal(decordedValue));
} catch (Exception e) {
throw new IllegalArgumentException(e);
}
}
public static void main(String... a) {
//String enc = encryptData("TPASU~TPAGU");
//System.out.println("Encrypted text==="+enc);
}
}
答案 0 :(得分:0)
您已使用更高版本的Java编译源文件,并在仅支持较低版本的JRE中执行它们。请确保您已在运行时使用受支持的Java版本进行编译。
在JRE中运行不兼容的类文件时会出现此错误。 say你执行在Java 7中编译并在JRE 6中执行的.class文件。但是,反过来是完全有效的。您绝对可以运行在Java 6中编译的.class文件,并在JRE 7环境中执行。