要使用“标准PBE字节加密器锁定”,你可以按照以下步骤进行操作:
import java.security.SecureRandom;
import java.security.spec.KeySpec;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.PBEParameterSpec;
public class PBECipherExample {
private static final String PASSWORD = "mySecretPassword"; // 密码
private static final byte[] SALT = { // 盐值
(byte) 0xde, (byte) 0x33, (byte) 0x10, (byte) 0x12,
(byte) 0xde, (byte) 0x33, (byte) 0x10, (byte) 0x12,
};
public static byte[] encrypt(byte[] plaintext) throws Exception {
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBEWithMD5AndDES");
SecretKey key = keyFactory.generateSecret(new PBEKeySpec(PASSWORD.toCharArray()));
Cipher cipher = Cipher.getInstance("PBEWithMD5AndDES");
cipher.init(Cipher.ENCRYPT_MODE, key, new PBEParameterSpec(SALT, 20));
return cipher.doFinal(plaintext);
}
public static byte[] decrypt(byte[] ciphertext) throws Exception {
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBEWithMD5AndDES");
SecretKey key = keyFactory.generateSecret(new PBEKeySpec(PASSWORD.toCharArray()));
Cipher cipher = Cipher.getInstance("PBEWithMD5AndDES");
cipher.init(Cipher.DECRYPT_MODE, key, new PBEParameterSpec(SALT, 20));
return cipher.doFinal(ciphertext);
}
}
public static void main(String[] args) {
try {
String message = "Hello, World!";
byte[] encrypted = PBECipherExample.encrypt(message.getBytes());
byte[] decrypted = PBECipherExample.decrypt(encrypted);
System.out.println("Original message: " + message);
System.out.println("Encrypted message: " + new String(encrypted));
System.out.println("Decrypted message: " + new String(decrypted));
} catch (Exception e) {
e.printStackTrace();
}
}
注意:在加密和解密方法中,使用了“PBEWithMD5AndDES”算法,你可以根据需要选择不同的算法。另外,盐值(SALT)和迭代次数(20)也可以根据需要进行调整。
下一篇:标准偏差计算不正确