常见的Java加密算法有如下几种:
-
对称加密算法:在对称加密算法中,使用同一个密钥进行加密和解密。常见的对称加密算法有DES、3DES、AES等。
-
非对称加密算法:非对称加密算法中,使用公钥进行加密,使用私钥进行解密,或者使用私钥进行加密,使用公钥进行解密。常见的非对称加密算法有RSA、ECC等。
-
消息摘要算法:在消息摘要算法中,将任意长度的消息转换为固定长度的摘要(或者叫做哈希值),常见的消息摘要算法有MD5、SHA-1、SHA-256等。
下面我将简要介绍一下Java中如何使用这些常见的加密算法。
- 对称加密算法
(1)使用DES算法进行加密和解密
以下是使用DES算法进行加密的示例代码:
public static byte[] encrypt(String content, String key) {
try {
SecretKey secretKey = new SecretKeySpec(key.getBytes(), "DES");
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encryptedBytes = cipher.doFinal(content.getBytes());
return encryptedBytes;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
以下是使用DES算法进行解密的示例代码:
public static String decrypt(byte[] encryptedBytes, String key) {
try {
SecretKey secretKey = new SecretKeySpec(key.getBytes(), "DES");
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
return new String(decryptedBytes);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
(2)使用AES算法进行加密和解密
以下是使用AES算法进行加密的示例代码:
public static byte[] encrypt(String content, String key) {
try {
SecretKey secretKey = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encryptedBytes = cipher.doFinal(content.getBytes());
return encryptedBytes;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
以下是使用AES算法进行解密的示例代码:
public static String decrypt(byte[] encryptedBytes, String key) {
try {
SecretKey secretKey = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
return new String(decryptedBytes);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
- 非对称加密算法
(1)使用RSA算法进行加密和解密
以下是使用RSA算法进行加密的示例代码:
public static byte[] encrypt(String content, PublicKey publicKey) {
try {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encryptedBytes = cipher.doFinal(content.getBytes());
return encryptedBytes;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
以下是使用RSA算法进行解密的示例代码:
public static String decrypt(byte[] encryptedBytes, PrivateKey privateKey) {
try {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
return new String(decryptedBytes);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
- 消息摘要算法
(1)使用MD5算法生成摘要
以下是使用MD5算法生成摘要的示例代码:
public static String md5(String content) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] bytes = md.digest(content.getBytes());
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
sb.append(Integer.toHexString((b & 0xff) | 0x100).substring(1, 3));
}
return sb.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
(2)使用SHA-256算法生成摘要
以下是使用SHA-256算法生成摘要的示例代码:
public static String sha256(String content) {
try {
MessageDigest md = MessageDigest.getInstance("SHA-256");
byte[] bytes = md.digest(content.getBytes());
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
sb.append(String.format("%02x", b));
}
return sb.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
以上是对Java中常见的加密算法的使用攻略,包含了对如何使用对称加密算法、非对称加密算法以及消息摘要算法进行加密和解密的详细说明,同时还给出了对每个算法的具体实现,希望能对您有所帮助。