写个基础的java密码加密
时间: 2023-06-15 15:07:07 浏览: 172
java密码加密
在Java中,常用的密码加密方式包括MD5、SHA、AES等,下面分别介绍一下。
1. MD5加密
MD5是一种常用的不可逆加密算法,可以将任意长度的数据加密成固定长度的字符串,其特点是同样的输入一定会产生同样的输出。Java中可以使用java.security.MessageDigest类来实现MD5加密。
示例代码:
```
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Util {
public static String encode(String str) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] bytes = md.digest(str.getBytes());
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
String hex = Integer.toHexString(b & 0xff);
if (hex.length() == 1) {
sb.append("0");
}
sb.append(hex);
}
return sb.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return null;
}
}
}
```
2. SHA加密
SHA是一种可逆或不可逆的加密算法,可以将任意长度的数据加密成固定长度的字符串,其特点是不同的输入只要有一点不同,输出结果就会很不一样。Java中可以使用java.security.MessageDigest类来实现SHA加密。
示例代码:
```
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class SHAUtil {
public static String encode(String str) {
try {
MessageDigest md = MessageDigest.getInstance("SHA");
byte[] bytes = md.digest(str.getBytes());
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
String hex = Integer.toHexString(b & 0xff);
if (hex.length() == 1) {
sb.append("0");
}
sb.append(hex);
}
return sb.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return null;
}
}
}
```
3. AES加密
AES是一种对称加密算法,加密和解密使用相同的密钥,可以实现高效的数据加密。Java中可以使用javax.crypto.Cipher类来实现AES加密。
示例代码:
```
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
public class AESUtil {
private static final String KEY = "1234567890123456"; // 密钥,必须是16位长度
public static String encrypt(String str) throws Exception {
byte[] raw = KEY.getBytes("UTF-8");
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
byte[] encrypted = cipher.doFinal(str.getBytes("UTF-8"));
return Base64.getEncoder().encodeToString(encrypted);
}
public static String decrypt(String str) throws Exception {
byte[] raw = KEY.getBytes("UTF-8");
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
byte[] encrypted = Base64.getDecoder().decode(str);
byte[] original = cipher.doFinal(encrypted);
return new String(original, "UTF-8");
}
}
```
以上是三种常用的密码加密方式的示例代码,供参考。需要注意的是,密码加密只是一种保护数据的手段,不能完全保证数据的安全,应该结合其他安全措施一起使用。
阅读全文