下面是“JAVA简单实现MD5注册登录加密实例代码”的攻略:
1. MD5简介
MD5,全称为Message-Digest Algorithm 5,是一种常用的密码散列函数,可以将任意长度的信息(不限于字符串)映射为一个128位(16字节)的哈希值。通常用于数据完整性校验和密码存储等场合。
2. MD5加密步骤概述
MD5算法分为4步:
- 填充数据
- 初始化状态变量
- 处理分组数据
- 输出结果
3. JAVA实现MD5加密
Java通过java.security.MessageDigest类和java.util.Base64类提供了MD5算法实现。
下面是基于Java提供的MessageDigest实现的MD5加密示例代码:
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Utils {
/**
* Encode string using MD5 algorithm
*
* @param input
* @return MD5 hash
* @throws NoSuchAlgorithmException
*/
public static String md5(String input) throws NoSuchAlgorithmException {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] messageDigest = md.digest(input.getBytes());
BigInteger number = new BigInteger(1, messageDigest);
String md5 = number.toString(16);
while (md5.length() < 32) {
md5 = "0" + md5;
}
return md5;
}
}
4. 注册登录加密实例代码
下面是一个用Java实现的基于MD5的注册登录加密实例代码:
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Scanner;
public class User {
private static final String SALT = "MySalt";
private String username;
private String password;
public User(String username, String password) {
this.username = username;
this.password = password;
}
public boolean authenticate(String password) throws NoSuchAlgorithmException {
return this.password.equals(MD5(password + SALT));
}
private String MD5(String input) throws NoSuchAlgorithmException {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(input.getBytes());
byte[] digest = md.digest();
StringBuilder sb = new StringBuilder();
for (byte b : digest) {
sb.append(Integer.toHexString((b & 0xff) | 0x100).substring(1));
}
return sb.toString();
}
public static void main(String[] args) throws NoSuchAlgorithmException {
Scanner sc = new Scanner(System.in);
System.out.println("Enter your username:");
String username = sc.nextLine();
System.out.println("Enter your password:");
String password = sc.nextLine();
String hashedPassword = MD5(password + SALT);
User user = new User(username, hashedPassword);
System.out.println("Login to your account:");
System.out.println("Enter your password:");
boolean isAuthenticated = user.authenticate(sc.nextLine());
if (isAuthenticated) {
System.out.println("Welcome, " + user.username + "!");
} else {
System.out.println("Login failed!");
}
}
}
在这个示例代码中,我们通过定义一个User类来实现注册和登录,以及密码的加密和比对。在密码加密时,我们使用固定的SALT值对用户密码进行加盐,然后再通过MD5算法进行加密处理。在比对用户密码时,我们通过User类的authenticate()方法来验证用户密码是否正确。
5. 参考资料
- Message-Digest Algorithm 5 (MD5), https://en.wikipedia.org/wiki/MD5
- Java MessageDigest API documentation, https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/security/MessageDigest.html
- Java Base64 API documentation, https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Base64.html
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JAVA简单实现MD5注册登录加密实例代码 - Python技术站