在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 评论