在Java中,我们可以很容易地使用内置的加密和解密API进行数据安全性处理。主要使用的是Java Cryptography Extension (JCE) 和Java Cryptography Architecture (JCA)库来实现这些安全措施。
一、基于单向哈希算法的加密
单向哈希算法,如MD5,SHA-1,SHA-256等,是常用的加密方式。这些算法有一个共性,就是它们都是不可逆的。
以下是一个使用SHA-256加密的代码例:
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class EncryptionExample {
public static String encrypt(String data, String algorithm) {
try {
MessageDigest md = MessageDigest.getInstance(algorithm);
md.update(data.getBytes());
byte[] resultBytes = md.digest();
StringBuilder sb = new StringBuilder();
for(byte b : resultBytes){
sb.append(String.format("%02x", b));
}
return sb.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
String data = "Hello World";
System.out.println("Original: " + data);
System.out.println("SHA-256: " + encrypt(data, "SHA-256"));
}
}
二、对称加密与解密
对称加密算法如AES、DES,是一种加密和解密使用相同秘钥的方式。
下面是一个使用AES加密和解密的例子:
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
public class AESEncryptionExample {
public static void main(String[] args) {
try {
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(128);
SecretKey key = keyGenerator.generateKey();
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encrypted = cipher.doFinal("Hello World".getBytes());
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] original = cipher.doFinal(encrypted);
System.out.println(new String(original));
} catch (Exception e) {
e.printStackTrace();
}
}
}
三、非对称加密与解密
非对称加密算法,如RSA,使用一对公密钥进行加密和解密。通常公钥用于加密,私钥用于解密。
以下是使用非对称加密方式RSA加密和解密的代码:
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import javax.crypto.Cipher;
public class RSAEncryptionExample {
public static void main(String[] args) {
try {
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
keyPairGen.initialize(1024);
KeyPair pair = keyPairGen.generateKeyPair();
PublicKey publicKey = pair.getPublic();
PrivateKey privateKey = pair.getPrivate();
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encrypted = cipher.doFinal("Hello World".getBytes());
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] original = cipher.doFinal(encrypted);
System.out.println(new String(original));
} catch (Exception e) {
e.printStackTrace();
}
}
}
本文链接:https://my.lmcjl.com/post/17126.html
展开阅读全文
4 评论