如何使用gwt在java中使用加密和解密保存密码
嗨,我正在使用GWT进行java项目。我想使用加密和解密保存密码。在java中,使用加密和解密保存密码的最佳方法是什么?我应该使用什么API?有什么帮助吗 提前感谢您可以使用图书馆 用法非常简单,如下代码所示:如何使用gwt在java中使用加密和解密保存密码,java,gwt,encryption,Java,Gwt,Encryption,嗨,我正在使用GWT进行java项目。我想使用加密和解密保存密码。在java中,使用加密和解密保存密码的最佳方法是什么?我应该使用什么API?有什么帮助吗 提前感谢您可以使用图书馆 用法非常简单,如下代码所示: //this will be used for encrypting and decrypting strings private TripleDesCipher encryptor; ... //creating key for encrypto
//this will be used for encrypting and decrypting strings
private TripleDesCipher encryptor;
...
//creating key for encryptor
TripleDesKeyGenerator generator = new TripleDesKeyGenerator();
byte[] key = generator.decodeKey("04578a8f0be3a7109d9e5e86839e3bc41654927034df92ec"); //you can pass your own string here
//initializing encryptor with generated key
encryptor = new TripleDesCipher();
encryptor.setKey(key);
...
使用加密机的示例函数如下所示:
private String encryptString(String string)
{
try
{
string = encryptor.encrypt( string );
}
catch (DataLengthException e1)
{
e1.printStackTrace();
}
catch (IllegalStateException e1)
{
e1.printStackTrace();
}
catch (InvalidCipherTextException e1)
{
e1.printStackTrace();
}
return string;
}
private String decryptString(String string)
{
try
{
string = encryptor.decrypt(string);
}
catch (DataLengthException e)
{
e.printStackTrace();
} catch (IllegalStateException e)
{
e.printStackTrace();
} catch (InvalidCipherTextException e)
{
e.printStackTrace();
}
return string;
}
您永远不应该加密用户的密码。您需要使用散列,而一些强散列是PBKDF2、bcrypt和scrypt。由于散列函数是单向函数,因此无法“解密”散列。为了对用户进行身份验证,您可以通过哈希函数再次运行密码,以便与存储在数据库中的哈希进行比较。在哈希之前不要忘记添加密码,以防止字典攻击。另外,使用安全的散列算法,比如从,特别是不是广泛使用的,但非常不安全。请不要这样做-客户端加密不是一个好主意,他们甚至有一篇文章在这方面。请通过加密通道(SSL)发送纯文本密码,并在服务器上安全地处理它(例如,用bcrypt散列)。我不认为这是个好主意,因为你是对的——只是这是一种在GWT中加密/解密字符串的方法,这是一种在客户端在GWT中加密/解密字符串的方法。OP询问的是“用java加密和解密保存密码的最佳方法”,所以不是专门在客户端,因此我的评论是这样的。虽然您的答案提供了一种有效的加密/解密方法,但专家们强烈反对这种方法。这类似于提到MD5是一种密码散列算法——技术上是正确的(这是一种散列算法),但你应该使用更强的盐渍散列算法(即bcrypt)。谢谢你,我想使用bcrypt,所以我必须包括任何jar?从何处获取BCrypthank u Igor Klimer供您参考。我使用bcrypt完成了这项工作,但我在服务器端编写了bcrypt代码,这意味着使用rpc调用。所以,从客户端开始,我使用RPC调用将密码文本发送到服务器端,我的密码安全吗??然后,在将密码保存到实体之前,我使用bcrypt将密码转换为散列。那么我的密码安全吗??