如何使用Java实现基础加密算法的函数
发布时间:2023-09-30 04:59:11
在Java中,我们可以使用一些现成的库和算法实现基础的加密算法。下面我们将介绍如何使用Java实现几种常见的加密算法,包括MD5、SHA、AES和RSA。
首先,我们需要导入Java标准库中的相关类和包,如java.security和javax.crypto。然后我们就可以使用这些类来实现加密算法了。
1. MD5算法:
MD5是一种常见的消息摘要算法,跟SHA算法一样用于校验数据完整性。在Java中,可以通过java.security.MessageDigest类来实现MD5算法。
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Example {
public static String getMD5(String input) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] digest = md.digest(input.getBytes());
StringBuilder sb = new StringBuilder();
for (byte b : digest) {
sb.append(String.format("%02x", b & 0xff));
}
return sb.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
String input = "Hello World";
String md5 = getMD5(input);
System.out.println(md5);
}
}
2. SHA算法:
SHA是一族安全散列算法,常用的有SHA-1、SHA-256等。在Java中,可以通过java.security.MessageDigest类实现SHA算法。
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class SHAExample {
public static String getSHA(String input, String algorithm) {
try {
MessageDigest md = MessageDigest.getInstance(algorithm);
byte[] digest = md.digest(input.getBytes());
StringBuilder sb = new StringBuilder();
for (byte b : digest) {
sb.append(String.format("%02x", b & 0xff));
}
return sb.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
String input = "Hello World";
String sha1 = getSHA(input, "SHA-1");
System.out.println(sha1);
String sha256 = getSHA(input, "SHA-256");
System.out.println(sha256);
}
}
3. AES算法:
AES是一种对称加密算法,常用于对称加密和解密数据。在Java中,可以通过javax.crypto.Cipher类来实现AES算法。
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
public class AESEncryptionExample {
public static String encryptAES(String input, SecretKey key) {
try {
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encrypted = cipher.doFinal(input.getBytes());
return Base64.getEncoder().encodeToString(encrypted);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static String decryptAES(String input, SecretKey key) {
try {
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] decrypted = cipher.doFinal(Base64.getDecoder().decode(input));
return new String(decrypted);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
try {
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(128);
SecretKey key = keyGen.generateKey();
String input = "Hello World";
String encrypted = encryptAES(input, key);
System.out.println(encrypted);
String decrypted = decryptAES(encrypted, key);
System.out.println(decrypted);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
}
4. RSA算法:
RSA是一种非对称加密算法,常用于密钥交换和数字签名。在Java中,可以通过java.security.KeyPairGenerator类来生成RSA密钥对,并使用javax.crypto.Cipher类来实现RSA加解密。
import javax.crypto.Cipher;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
public class RSAEncryptionExample {
public static byte[] encryptRSA(String input, PublicKey publicKey) {
try {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
return cipher.doFinal(input.getBytes());
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static String decryptRSA(byte[] input, PrivateKey privateKey) {
try {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decrypted = cipher.doFinal(input);
return new String(decrypted);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
try {
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(2048);
KeyPair keyPair = keyGen.generateKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
String input = "Hello World";
byte[] encrypted = encryptRSA(input, publicKey);
System.out.println(encrypted);
String decrypted = decryptRSA(encrypted, privateKey);
System.out.println(decrypted);
} catch (Exception e) {
e.printStackTrace();
}
}
}
以上就是使用Java实现基础加密算法的函数的示例代码。通过这些示例代码,我们可以实现常见的加密和解密操作,来保护我们的数据安全。
