使用java在客户端解密
我在服务器端加密了会话ID,但是当我尝试在客户端解密会话ID时,会出现一些错误。 请任何人都可以帮助解决错误。
public static String decrypt(String sessionId) { try { Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5PADDING"); final SecretKeySpec secretKey = new SecretKeySpec(key, "AES"); cipher.init(Cipher.DECRYPT_MODE, secretKey); final String decryptedSessionId = new String(cipher.doFinal(Base64.decodeBase64(sessionId))); return decryptedSessionId; } catch (Exception e) { e.printStackTrace(); } return null; }
即将发生的错误是:JRE仿真库中不存在类’javax.crypto.Cipher’,因此它不能用于“某些”GWT模块的客户端代码中。
此检查报告JDK类的客户端代码中的用法,这在JRE仿真库中不存在。
我使用的加密方法是:
public static String encrypt(String sessionId) { try { Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); final SecretKeySpec secretKey = new SecretKeySpec(key, "AES"); cipher.init(Cipher.ENCRYPT_MODE, secretKey); final String encryptedSessionId = Base64.encodeBase64String(cipher.doFinal(sessionId.getBytes())); return encryptedSessionId; } catch (Exception e) { e.printStackTrace(); } return null; }
我是新手,请帮我解决错误
那么,你不能在客户端的GWT编码中使用java标准加密库。 它不受支持。
使用gwt-crypto加密/解密必要的东西。
GWT-crypto中GWT的客户端不支持AES,但您可以使用TripleDES。 TripleDES也是非常安全的实现。
- 无法在黑莓中解密AES的php代码密文
- 带有Bouncy Castle的256位AES / CBC / PKCS5Padding
- InvalidKeyException java.security.InvalidKeyException:没有安装的提供程序支持此键:(null)
- 服务器(Java – Cipher)和客户端之间的AES(Javascript – CryptoJS)
- 使用Base64的AES会为同一纯文本生成不同的加密结果吗?
- javax.crypto.IllegalBlockSizeException:解密时最后一个块不完整 – 解密加密的AES字符串
- AES 256-CBC上的密钥和iv问题
- perl CBC DES相当于java
- 使用相同的密钥解密AES时BadPaddingException