CFB (Cipher Feedback) mode in Java JCE
To use CFB mode in Java JCE, you will need to follow these steps:
- Import the necessary classes:
import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec;
- Provide the key and initialization vector (IV) for your encryption/decryption process:
String key = "0123456789abcdef"; // 16-byte key String iv = "1234567890abcdef"; // 16-byte initialization vector
- Create instances of
SecretKeySpec
andIvParameterSpec
using the provided key and IV:SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES"); IvParameterSpec ivSpec = new IvParameterSpec(iv.getBytes());
- Initialize the
Cipher
instance with the desired algorithm and mode:Cipher cipher = Cipher.getInstance("AES/CFB/NoPadding");
- Initialize the
Cipher
instance in encryption or decryption mode with the specified key and IV:cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivSpec); // For encryption
OR
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, ivSpec); // For decryption
- Use the
doFinal
method to perform the encryption/decryption:byte[] input = "Hello, CFB!".getBytes(); byte[] cipherText = cipher.doFinal(input);
Here’s a complete example of using CFB mode in Java JCE for encryption and decryption:
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
public class CFBExample {
public static void main(String[] args) throws Exception {
String key = "0123456789abcdef";
String iv = "1234567890abcdef";
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");
IvParameterSpec ivSpec = new IvParameterSpec(iv.getBytes());
Cipher cipher = Cipher.getInstance("AES/CFB/NoPadding");
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivSpec);
byte[] input = "Hello, CFB!".getBytes();
byte[] cipherText = cipher.doFinal(input);
System.out.println("Encrypted text: " + new String(cipherText));
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, ivSpec);
byte[] decryptedText = cipher.doFinal(cipherText);
System.out.println("Decrypted text: " + new String(decryptedText));
}
}
Remember to handle appropriate exceptions and provide error handling where necessary.
#Java #JCE