何如实现脱敏字段和明文字段都通过同一个加密字段中读取请给出具体的JAVA实现代码
以下是一个简单的JAVA实现代码示例:
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class EncryptionUtils {
private static final String ENCRYPTION_KEY = "your-encryption-key";
public static String encrypt(String plaintext) throws Exception {
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
DESKeySpec desKeySpec = new DESKeySpec(ENCRYPTION_KEY.getBytes(StandardCharsets.UTF_8));
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encryptedBytes = cipher.doFinal(plaintext.getBytes(StandardCharsets.UTF_8));
return Base64.getEncoder().encodeToString(encryptedBytes);
}
public static String decrypt(String ciphertext) throws Exception {
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
DESKeySpec desKeySpec = new DESKeySpec(ENCRYPTION_KEY.getBytes(StandardCharsets.UTF_8));
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(ciphertext));
return new String(decryptedBytes, StandardCharsets.UTF_8);
}
public static void main(String[] args) throws Exception {
String plaintext = "Hello, World!";
String encryptedText = encrypt(plaintext);
System.out.println("Encrypted Text: " + encryptedText);
String decryptedText = decrypt(encryptedText);
System.out.println("Decrypted Text: " + decryptedText);
}
}
在上面的代码中,ENCRYPTION_KEY是用于加密和解密的密钥。使用DES算法进行加密和解密,使用ECB模式和PKCS5Padding填充方案。encrypt方法将明文转换为加密文本,decrypt方法将加密文本转换回明文。在main方法中,我们演示了如何使用这些方法进行加密和解密,并将结果打印出来
原文地址: https://www.cveoy.top/t/topic/ihKP 著作权归作者所有。请勿转载和采集!