您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
在Java中,有多种方法可以实现字符串的加密。以下是一些常用的加密算法和相应的实现方式:
Base64是一种常见的编码方式,虽然它不是加密算法,但可以用于对字符串进行简单的编码。
import java.util.Base64;
public class Base64Example {
public static void main(String[] args) {
String originalString = "Hello, World!";
String encodedString = Base64.getEncoder().encodeToString(originalString.getBytes());
System.out.println("Encoded String: " + encodedString);
byte[] decodedBytes = Base64.getDecoder().decode(encodedString);
String decodedString = new String(decodedBytes);
System.out.println("Decoded String: " + decodedString);
}
}
MD5是一种广泛使用的哈希算法,用于生成固定长度的哈希值。
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Example {
public static void main(String[] args) {
String originalString = "Hello, World!";
try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] hashBytes = md.digest(originalString.getBytes());
StringBuilder sb = new StringBuilder();
for (byte b : hashBytes) {
sb.append(String.format("%02x", b));
}
String hashString = sb.toString();
System.out.println("MD5 Hash: " + hashString);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
}
SHA-256是另一种常用的哈希算法,比MD5更安全。
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class SHA256Example {
public static void main(String[] args) {
String originalString = "Hello, World!";
try {
MessageDigest md = MessageDigest.getInstance("SHA-256");
byte[] hashBytes = md.digest(originalString.getBytes());
StringBuilder sb = new StringBuilder();
for (byte b : hashBytes) {
sb.append(String.format("%02x", b));
}
String hashString = sb.toString();
System.out.println("SHA-256 Hash: " + hashString);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
}
AES(高级加密标准)是一种对称加密算法,适用于需要较高安全性的场景。
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
public class AESEncryptionExample {
public static void main(String[] args) {
try {
String originalString = "Hello, World!";
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(128); // 128位密钥
SecretKey secretKey = keyGen.generateKey();
byte[] encodedKey = secretKey.getEncoded();
SecretKeySpec secretKeySpec = new SecretKeySpec(encodedKey, "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
byte[] encryptedBytes = cipher.doFinal(originalString.getBytes());
String encryptedString = Base64.getEncoder().encodeToString(encryptedBytes);
System.out.println("Encrypted String: " + encryptedString);
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedString));
String decryptedString = new String(decryptedBytes);
System.out.println("Decrypted String: " + decryptedString);
} catch (Exception e) {
e.printStackTrace();
}
}
}
RSA是一种非对称加密算法,适用于需要公钥和私钥的场景。
import javax.crypto.Cipher;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.util.Base64;
public class RSAEncryptionExample {
public static void main(String[] args) {
try {
String originalString = "Hello, World!";
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(2048);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encryptedBytes = cipher.doFinal(originalString.getBytes());
String encryptedString = Base64.getEncoder().encodeToString(encryptedBytes);
System.out.println("Encrypted String: " + encryptedString);
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedString));
String decryptedString = new String(decryptedBytes);
System.out.println("Decrypted String: " + decryptedString);
} catch (Exception e) {
e.printStackTrace();
}
}
}
这些示例展示了如何在Java中实现不同类型的字符串加密。根据具体需求选择合适的加密算法和模式。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。