I have been trying to do decryption in java for exact same decryption descibed in
C# AES 256 bits Encryption Library with Salt[
^] which is C# . But i am not able to get the same output , Could anybody assist.
What I have tried:
byte[] salt = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 };
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
MessageDigest md = MessageDigest.getInstance("SHA-256" );
md.update(KEY_IV.getBytes( StandardCharsets.UTF_8 ) );
byte[] hashDigest = md.digest();
String encryptedHashDigest = Base64.encodeBase64String(hashDigest);
PBEKeySpec pbeKeySpec = new PBEKeySpec(encryptedHashDigest.toCharArray(),
salt, 1000, 384);
Key generatedKey = factory.generateSecret(pbeKeySpec);
byte[] extractedKey = new byte[32];
byte[] iv = new byte[16];
System.arraycopy(generatedKey.getEncoded(), 0, extractedKey, 0, 32);
System.arraycopy(generatedKey.getEncoded(), 32, iv, 0, 16);
byte[] base64Decoded = Base64.decodeBase64(toBeDecrypted);
Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding");
c.init(2, new SecretKeySpec(extractedKey, "AES"), new IvParameterSpec(iv));
byte[] decryptedBytes = c.doFinal(base64Decoded);
System.out.println("Decrypted " + new String(Base64.encodeBase64(decryptedBytes), StandardCharsets.UTF_8));