Java 如何存储用户详细信息,如密码和用户名等
我正在用Java服务器构建一个Android Messenger 显然,用户需要登录。如何存储密码和用户名,以及在用户尝试登录时如何检查密码和用户名? 关于安全性,我认为仅仅使用Hashmap并不是一个好主意。 另一方面,在性能方面,我问自己是否应该使用SQL数据库(或类似数据库)。那里的安全是如何处理的Java 如何存储用户详细信息,如密码和用户名等,java,android,sql,messenger,Java,Android,Sql,Messenger,我正在用Java服务器构建一个Android Messenger 显然,用户需要登录。如何存储密码和用户名,以及在用户尝试登录时如何检查密码和用户名? 关于安全性,我认为仅仅使用Hashmap并不是一个好主意。 另一方面,在性能方面,我问自己是否应该使用SQL数据库(或类似数据库)。那里的安全是如何处理的 由于性能等原因,我不认为在服务器上使用Java是一种专业的方式。但我已经知道Java,它只是一个学习项目。如果您使用的是服务器,让他们为您处理身份验证。除非您是安全的,并且知道自己在做什么,否
由于性能等原因,我不认为在服务器上使用Java是一种专业的方式。但我已经知道Java,它只是一个学习项目。如果您使用的是服务器,让他们为您处理身份验证。除非您是安全的,并且知道自己在做什么,否则您不希望自己存储用户身份验证信息 我强烈建议您使用下面的一些教程,但是
Edwin的新增内容:
如果您使用自己的身份验证和服务器:仅在对身份验证信息进行哈希/加密后发送身份验证信息,然后解密服务器端。此外,此图像可能有助于您可以轻松使用用户名密码加密方法 试试这个:
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
public class Encryption {
public static final String DEFAULT_ENCODING="UTF-8";
static BASE64Encoder enc=new BASE64Encoder();
static BASE64Decoder dec=new BASE64Decoder();
public String base64encode(String text){
try {
String rez = enc.encode( text.getBytes( DEFAULT_ENCODING ) );
return rez;
}
catch ( UnsupportedEncodingException e ) {
return null;
}
}//base64encode
public String base64decode(String text){
try {
return new String(dec.decodeBuffer( text ),DEFAULT_ENCODING);
}
catch ( IOException e ) {
return null;
}
}//base64decode
public String xorMessage(String message, String key){
try {
if (message==null || key==null ) return null;
char[] keys=key.toCharArray();
char[] mesg=message.toCharArray();
int ml=mesg.length;
int kl=keys.length;
char[] newmsg=new char[ml];
for (int i=0; i<ml; i++){
newmsg[i]=(char)(mesg[i]^keys[i%kl]);
}//for i
mesg=null; keys=null;
return new String(newmsg);
}
catch ( Exception e ) {
return null;
}
}//xorMessage
}
在控制器类中
String password = authenticationController.getEncryptWord(user.getPassword());
现在您可以保存密码;它是加密和安全的
然后,当您选择登录方法时,可以通过这种方式进行检查
public User login(String username, String password) {
String userPassword = authenticationController.getEncryptWord(password);
System.out.println("User Pass : "+userPassword);
User user = userDAOController.searchUserByEmail(username);
System.out.println("DB Pass : "+user.getPassword());
User returnUser;
if(userPassword.equals(user.getPassword())){
System.out.println("user");
returnUser = userDAOController.login(username, userPassword);
}else{
returnUser = null;
}
return returnUser;
}
我想这会有帮助的
谢谢………您想在android应用程序中实现服务器-客户端连接吗?是的,我有一台java服务器正在运行,并从android应用程序中连接到服务器。尝试此链接您提供的URL未打开似乎是错误的!只想添加:仅在对身份验证信息进行哈希/加密时发送身份验证信息,然后对服务器端进行解密。此外,可能有助于这种流的总体思路。嗯,我使用的是服务器。。。我自己写的服务器。:)
public User login(String username, String password) {
String userPassword = authenticationController.getEncryptWord(password);
System.out.println("User Pass : "+userPassword);
User user = userDAOController.searchUserByEmail(username);
System.out.println("DB Pass : "+user.getPassword());
User returnUser;
if(userPassword.equals(user.getPassword())){
System.out.println("user");
returnUser = userDAOController.login(username, userPassword);
}else{
returnUser = null;
}
return returnUser;
}