Java加密解密函数大全:保障数据安全
Java加密解密函数是为了保障数据安全而开发的一种技术。在现代社会中,隐私数据泄露的事件屡屡发生,由此造成的不良影响也越来越大。Java加密解密函数应运而生,可以帮助用户对敏感数据进行加密存储或传输,从而保障数据安全。下面是Java加密解密函数大全,旨在提供一些参考和帮助。
1. DES(Data Encryption Standard)加密
DES是一种对称加密算法,通过加密和解密使用相同的密钥来保护数据。Java提供了DES加密和解密函数。下面是一个DES加密的例子:
public static String DesEncrypt(String message, String key) {
try {
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "DES");
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
byte[] result = cipher.doFinal(message.getBytes());
return Base64.getEncoder().encodeToString(result);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
2. AES(Advanced Encryption Standard)加密
AES是一种可靠、高效的加密算法,其加密强度高于DES。Java提供了AES加密和解密函数。下面是一个AES加密的例子:
public static String AesEncrypt(String message, String key) {
try {
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
byte[] result = cipher.doFinal(message.getBytes());
return Base64.getEncoder().encodeToString(result);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
3. RSA(Rivest–Shamir–Adleman)加密
RSA是一种非对称加密算法,使用公钥加密、私钥解密,或者使用私钥加密、公钥解密。Java提供了RSA加密和解密函数。下面是一个RSA加密的例子:
public static String RsaEncrypt(String message, PublicKey publicKey) {
try {
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] result = cipher.doFinal(message.getBytes());
return Base64.getEncoder().encodeToString(result);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
4. MD5(Message Digest 5)加密
MD5是一种消息摘要算法,其作用是将一段任意长度的字节串映射成一个128位的大整数。Java提供了MD5加密函数。下面是一个MD5加密的例子:
public static String Md5Encrypt(String message) {
try {
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
byte[] result = messageDigest.digest(message.getBytes());
return new BigInteger(1, result).toString(16);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
5. SHA(Secure Hash Algorithm)加密
SHA是一种安全哈希算法,其作用是将一段任意长度的字节串映射成一个固定长度的大整数。Java提供了SHA加密函数。下面是一个SHA加密的例子:
public static String ShaEncrypt(String message) {
try {
MessageDigest messageDigest = MessageDigest.getInstance("SHA");
byte[] result = messageDigest.digest(message.getBytes());
return new BigInteger(1, result).toString(16);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
6. HMAC(Hash-based Message Authentication Code)加密
HMAC是一种基于哈希函数和密钥的消息认证码,其作用是验证某个消息的完整性和真实性。Java提供了HMAC加密函数。下面是一个HMAC加密的例子:
public static String HmacEncrypt(String message, String key) {
try {
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "HmacSHA256");
Mac mac = Mac.getInstance("HmacSHA256");
mac.init(secretKeySpec);
byte[] result = mac.doFinal(message.getBytes());
return new BigInteger(1, result).toString(16);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
7. BASE64(Basic Encoding Rules 64)编码
BASE64是一种基于64个字符的编码方式,其作用是将二进制数据转换成文本格式。Java提供了BASE64编码和解码函数。下面是一个BASE64编码的例子:
public static String Base64Encode(String message) {
try {
return Base64.getEncoder().encodeToString(message.getBytes());
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
8. AES/GCM(Galois/Counter Mode)加密
AES/GCM是一种高级加密标准和加性密码分组模式,其作用是在加密的同时提供完整性和数据源认证。Java提供了AES/GCM加密和解密函数。下面是一个AES/GCM加密的例子:
public static String AesGcmEncrypt(String message, String key) {
try {
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding");
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
byte[] result = cipher.doFinal(message.getBytes());
byte[] iv = cipher.getIV();
byte[] output = new byte[result.length + iv.length];
System.arraycopy(iv, 0, output, 0, iv.length);
System.arraycopy(result, 0, output, iv.length, result.length);
return Base64.getEncoder().encodeToString(output);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
9. SM4(国密算法)加密
SM4是一种对称加密算法,其加密强度高于DES和AES,成为国密算法。Java提供了SM4加密和解密函数。下面是一个SM4加密的例子:
public static String SM4Encrypt(String message, String key) {
try {
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "SM4");
Cipher cipher = Cipher.getInstance("SM4/ECB/NoPadding");
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
byte[] result = cipher.doFinal(message.getBytes());
return Base64.getEncoder().encodeToString(result);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
10. JWT(JSON Web Tokens)加密
JWT是一种安全的身份验证和授权方式,其使用JSON Web Tokens对用户身份进行验证。Java提供了JWT加密和解密函数。下面是一个JWT加密的例子:
public static String JWTEncrypt(Map<String, Object> header, Map<String, Object> payload, String key) {
try {
String encodedHeader = Base64.getUrlEncoder().withoutPadding().encodeToString(new Gson().toJson(header).getBytes());
String encodedPayload = Base64.getUrlEncoder().withoutPadding().encodeToString(new Gson().toJson(payload).getBytes());
String signature = HMACSHA256(encodedHeader + "." + encodedPayload, key);
return encodedHeader + "." + encodedPayload + "." + signature;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
综上所述,Java加密解密函数是一种保障数据安全的技术,它可以帮助用户对敏感数据进行加密存储或传输。Java提供了多种加密解密算法,每种算法都有其适用场景和优势。在实际应用中,应选择适合自己的加密算法并合理选取密钥长度,从而提高数据安全性。
