欢迎访问宙启技术站
智能推送

Java中的加密解密函数有哪些?如何实现?

发布时间:2023-07-03 12:26:35

在Java中,有许多用于加密和解密数据的函数和类。以下是一些常见的加密和解密函数及其实现方式。

1. 对称加密算法:

对称加密算法使用同一个密钥进行加密和解密,常见的算法有DES、AES和DESede。

- DES加密和解密:

     // 加密
     Cipher cipher = Cipher.getInstance("DES");
     cipher.init(Cipher.ENCRYPT_MODE, key);
     byte[] encryptedData = cipher.doFinal(data);
     
     // 解密
     Cipher cipher = Cipher.getInstance("DES");
     cipher.init(Cipher.DECRYPT_MODE, key);
     byte[] decryptedData = cipher.doFinal(encryptedData);
     

- AES加密和解密:

     // 加密
     Cipher cipher = Cipher.getInstance("AES");
     cipher.init(Cipher.ENCRYPT_MODE, key);
     byte[] encryptedData = cipher.doFinal(data);
     
     // 解密
     Cipher cipher = Cipher.getInstance("AES");
     cipher.init(Cipher.DECRYPT_MODE, key);
     byte[] decryptedData = cipher.doFinal(encryptedData);
     

- DESede加密和解密:

     // 加密
     Cipher cipher = Cipher.getInstance("DESede");
     cipher.init(Cipher.ENCRYPT_MODE, key);
     byte[] encryptedData = cipher.doFinal(data);
     
     // 解密
     Cipher cipher = Cipher.getInstance("DESede");
     cipher.init(Cipher.DECRYPT_MODE, key);
     byte[] decryptedData = cipher.doFinal(encryptedData);
     

2. 非对称加密算法:

非对称加密算法使用一对密钥(公钥和私钥)进行加密和解密,常见的算法有RSA。

- RSA加密和解密:

     // 生成密钥对
     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");
     cipher.init(Cipher.ENCRYPT_MODE, publicKey);
     byte[] encryptedData = cipher.doFinal(data);
     
     // 解密
     Cipher cipher = Cipher.getInstance("RSA");
     cipher.init(Cipher.DECRYPT_MODE, privateKey);
     byte[] decryptedData = cipher.doFinal(encryptedData);
     

3. 哈希算法:

哈希算法用于将任意长度的数据转换成固定长度的哈希值,常见的算法有MD5和SHA。

- MD5哈希:

     MessageDigest md = MessageDigest.getInstance("MD5");
     byte[] hash = md.digest(data);
     

- SHA-256哈希:

     MessageDigest md = MessageDigest.getInstance("SHA-256");
     byte[] hash = md.digest(data);
     

这些是Java中常用的加密和解密函数和类。实现时,需要导入相关的类库,根据具体的需求和场景选择合适的加密算法和密钥长度,并正确初始化加密器或解密器的模式和密钥。在使用非对称加密算法时,需要生成密钥对并获取公钥和私钥。加密时调用加密器的doFinal方法,解密时调用解密器的doFinal方法,将加密或解密的数据传入并获取结果。哈希算法则直接调用相应的哈希函数,将需要哈希的数据传入并获取哈希值。