Fix AES CTR decryption issue
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Dmitry Isaenko 2023-01-20 23:55:40 +03:00
parent d63d2416ff
commit 5bb6a3c3f4
2 changed files with 10 additions and 1 deletions

View file

@ -24,6 +24,7 @@ import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec; import javax.crypto.spec.SecretKeySpec;
import java.math.BigInteger; import java.math.BigInteger;
import java.nio.ByteBuffer;
import java.security.Security; import java.security.Security;
public class AesCtrDecryptClassic { public class AesCtrDecryptClassic {
@ -64,7 +65,14 @@ public class AesCtrDecryptClassic {
private byte[] calculateCtr(long offset){ private byte[] calculateCtr(long offset){
BigInteger ctr = new BigInteger(ivArray); BigInteger ctr = new BigInteger(ivArray);
BigInteger updateTo = BigInteger.valueOf(offset / 0x10L); BigInteger updateTo = BigInteger.valueOf(offset / 0x10L);
return ctr.add(updateTo).toByteArray(); byte[] ctrCalculated = ctr.add(updateTo).toByteArray();
if (ctrCalculated.length != 0x10) {
ByteBuffer ctrByteBuffer = ByteBuffer.allocate(0x10);
ctrByteBuffer.position(0x10 - ctrCalculated.length);
ctrByteBuffer.put(ctrCalculated);
return ctrByteBuffer.array();
}
return ctrCalculated;
} }
/** /**

View file

@ -96,6 +96,7 @@ public class InFileStreamClassicProducer implements IProducer {
* @param encryptedEndOffset Offset since parent stream start at stream where encrypted section ends * @param encryptedEndOffset Offset since parent stream start at stream where encrypted section ends
* @param key AES-CTR Key * @param key AES-CTR Key
* @param iv CTR / IV (counter) * @param iv CTR / IV (counter)
* @param fileSize File Size
*/ */
public InFileStreamClassicProducer(InFileStreamProducer parentProducer, public InFileStreamClassicProducer(InFileStreamProducer parentProducer,
long offset, long offset,