Java 客户端AES解密
我已经在服务器端使用AES加密了会话id,但无法在客户端解密加密的会话id,因为没有为GWT定义任何AES库来支持java中的AES解密。 服务器端AES加密的代码段为:Java 客户端AES解密,java,gwt,cryptography,aes,Java,Gwt,Cryptography,Aes,我已经在服务器端使用AES加密了会话id,但无法在客户端解密加密的会话id,因为没有为GWT定义任何AES库来支持java中的AES解密。 服务器端AES加密的代码段为: public static String encrypt(String sessionId) { try { Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); String key = "Abcdefg
public static String encrypt(String sessionId)
{
try
{
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
String key = "Abcdefghijklmnop";
final SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), "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;
}
对于解密,我正在尝试使用此链接中提供的代码:
但这不起作用。请提供任何解决方案,如果有
我在DES中尝试过加密和解密,但我需要使用AES。AES在GWT的客户端不受支持,但您可以使用TripleDES。TripleDES也是非常安全的实现 这是另一个类似的例子 以下是GWT加密的已知问题列表
请参阅#第1期-Java AES Decryptor无法解密AES加密内容,反之亦然加密会话id的目的是什么?您显示的此代码段会生成不可加密的密文,因为IV未保存。IV不是秘密,所以你可以把它和密文一起发送。通常,它只是在密文前面加上前缀,然后在解密之前切掉。如果只使用对称加密,则服务器和客户端需要完全相同的密钥。如果将加密密钥从服务器发送到客户端,或者以其他方式发送,则需要加密对称加密密钥。最简单的方法是使用TLS。如果您使用TLS,那么数据和密钥都是加密的,所以您不需要自己加密。这并没有提供任何安全性,只是有点模糊。您应该阅读:好的,我将尝试使用IV,但问题是,在客户端,即将出现的错误是:无法读取undefinedcom.google.gwt.core.client.JavaScriptException的属性'AES':(TypeError):无法读取undefined的属性'AES'。在问题中,我强调我已经实现了DES方法。由于需要,需要使用AES实施。