Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

SecretKeyFactory factory =SecretKeyFactory.getInstance(\"PBKDF2WithHmacSHA1\");

ID: 3615178 • Letter: S

Question

   

   SecretKeyFactory factory =SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
    KeySpec spec = new PBEKeySpec(password, salt,1024, 256);
    SecretKey tmp =factory.generateSecret(spec);
    SecretKey secret = newSecretKeySpec(tmp.getEncoded(), "AES");

    Cipher cipher =Cipher.getInstance("AES/CBC/PKCS5Padding");
    cipher.init(Cipher.ENCRYPT_MODE, secret);
    AlgorithmParameters params =cipher.getParameters();
    byte[] iv =params.getParameterSpec(IvParameterSpec.class).getIV();
    byte[] ciphertext = cipher.doFinal("Hello,World!".getBytes("UTF-8"));


here are the libraries to be imported for this code in jdk

import java.security.*;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.InvalidParameterSpecException;
import java.security.spec.KeySpec;

import javax.crypto.*;
import javax.crypto.spec.*;
import java.io.*;


Explanation / Answer

import java.io.InputStream; import java.io.OutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectOutputStream; import java.io.ObjectInputStream; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.spec.IvParameterSpec; import javax.crypto.CipherInputStream; import javax.crypto.CipherOutputStream; import javax.crypto.KeyGenerator; import java.security.spec.AlgorithmParameterSpec; public class AESEncrypter { Cipher ecipher; Cipher dcipher; public AESEncrypter(SecretKey key) { // Create an 8-byte initialization vector byte[] iv = new byte[] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,0x0a,0x0b, 0x0c, 0x0d, 0x0e, 0x0f }; AlgorithmParameterSpec paramSpec =new IvParameterSpec(iv); try { ecipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); dcipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); // CBC requires an initialization vector ecipher.init(Cipher.ENCRYPT_MODE, key, paramSpec); dcipher.init(Cipher.DECRYPT_MODE, key, paramSpec); } catch (Exception e) { e.printStackTrace(); } } // Buffer used to transport the bytes from one stream toanother byte[] buf = new byte[1024]; public void encrypt(InputStream in, OutputStream out) { try { // Bytes written to out will be encrypted out = new CipherOutputStream(out,ecipher); // Read in the cleartext bytes and write to out to encrypt int numRead = 0; while ((numRead = in.read(buf)) >= 0) { out.write(buf, 0, numRead); } out.close(); } catch (java.io.IOException e) { } } public void decrypt(InputStream in, OutputStream out) { try { // Bytes read from in will be decrypted in = new CipherInputStream(in,dcipher); // Read in the decrypted bytes and write the cleartext to out int numRead = 0; while ((numRead = in.read(buf)) >= 0) { out.write(buf, 0, numRead); } out.close(); } catch (java.io.IOException e) { } } public static void main(String args[]) { try { // Generate a temporary key. In practice, you would save thiskey. // See also e464 Encrypting with DES Using a Pass Phrase. KeyGenerator kgen =KeyGenerator.getInstance("AES"); kgen.init(128); SecretKey key =kgen.generateKey(); // Create encrypter/decrypter class AESEncrypter encrypter = new AESEncrypter(key); // Encrypt encrypter.encrypt(new FileInputStream("E:\keeper.txt"),new FileOutputStream("E:\Encrypted.txt")); // Decrypt encrypter.decrypt(new FileInputStream("E:\keeper.txt"),new FileOutputStream("E:\Decrypted.txt")); } catch (Exception e) { e.printStackTrace(); } } }

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote