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

Java函数如何实现对字符串的加密和解密

发布时间:2023-07-04 18:12:21

Java 中实现对字符串的加密和解密可以使用以下方法:

1. 使用对称加密算法:

对称加密算法使用相同的密钥来进行加密和解密。

常见的对称加密算法有:DES、AES、DESede等。

加密示例代码:

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;

public String encrypt(String key, String data) throws Exception {
    DESKeySpec desKeySpec = new DESKeySpec(key.getBytes());
    SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
    SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
    Cipher cipher = Cipher.getInstance("DES");
    cipher.init(Cipher.ENCRYPT_MODE, secretKey);
    byte[] encryptedData = cipher.doFinal(data.getBytes());
    return Base64.getEncoder().encodeToString(encryptedData);
}

解密示例代码:

public String decrypt(String key, String encryptedData) throws Exception {
    DESKeySpec desKeySpec = new DESKeySpec(key.getBytes());
    SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
    SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
    Cipher cipher = Cipher.getInstance("DES");
    cipher.init(Cipher.DECRYPT_MODE, secretKey);
    byte[] data = Base64.getDecoder().decode(encryptedData);
    byte[] decryptedData = cipher.doFinal(data);
    return new String(decryptedData);
}

2. 使用非对称加密算法:

非对称加密算法使用公钥加密数据,私钥解密数据。

常见的非对称加密算法有:RSA、DSA等。

加密示例代码:

import java.security.Key;
import java.security.KeyFactory;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import javax.crypto.Cipher;

public String encrypt(String publicKey, String data) throws Exception {
    byte[] keyBytes = Base64.getDecoder().decode(publicKey);
    X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);
    KeyFactory keyFactory = KeyFactory.getInstance("RSA");
    Key key = keyFactory.generatePublic(keySpec);
    Cipher cipher = Cipher.getInstance("RSA");
    cipher.init(Cipher.ENCRYPT_MODE, key);
    byte[] encryptedData = cipher.doFinal(data.getBytes());
    return Base64.getEncoder().encodeToString(encryptedData);
}

解密示例代码:

public String decrypt(String privateKey, String encryptedData) throws Exception {
    byte[] keyBytes = Base64.getDecoder().decode(privateKey);
    PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);
    KeyFactory keyFactory = KeyFactory.getInstance("RSA");
    Key key = keyFactory.generatePrivate(keySpec);
    Cipher cipher = Cipher.getInstance("RSA");
    cipher.init(Cipher.DECRYPT_MODE, key);
    byte[] data = Base64.getDecoder().decode(encryptedData);
    byte[] decryptedData = cipher.doFinal(data);
    return new String(decryptedData);
}

以上示例代码可以实现对字符串的加密和解密操作,具体的加密算法和密钥生成方式可以根据实际需求进行调整。