How to install BlockSize and KeySize using AES encription in java

I am trying to set BlockSize and KeySize to java encryption code.
Here is my code that works great, but how to specify aes.BlockSize = 128 and aes.KeySize = 128?
I use the link Aes aes = AesManaged () in .NET, in which we can set the following parameter as follows:

aes.BlockSize = 128; aes.KeySize = 128; CipherMode.ECB; aes.Padding = PaddingMode.None; 

In the code below, I set the following three parameters:

 aes.Key = key aes.Mode = CipherMode.ECB aes.Padding = PaddingMode.None 

but i can't install

 aes.BlockSize = 128 aes.KeySize = 128; 

 public static void main(String args[]) { byte[] keyForEncription = new byte[16]; byte[] keyForDecription = new byte[16]; long FixedKey = 81985526925837671L; long VariableKey = 744818830; for (int i1 = 0; i1 < 8; i1++) { keyForEncription[i1] = (byte) (FixedKey >> (8 * i1)); keyForEncription[i1 + 8] = (byte) (VariableKey >> (8 * i1)); } short[] data = new short[96]; data[0] = 2; data[1] = 0; data[2] = 0; data[3] = 0; data[4] = 0; data[5] = 6; data[6] = 6; data[7] = 81; data[8] = 124; data[9] = 23; data[10] = 3; SecretKeySpec skeySpec = new SecretKeySpec(keyForEncription, "AES"); Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding"); cipher.init(Cipher.ENCRYPT_MODE, skeySpec); ByteArrayOutputStream bos = new ByteArrayOutputStream(); CipherOutputStream cos = new CipherOutputStream(bos, cipher); DataOutputStream dos = new DataOutputStream(cos); byte[] byteArray_data = new byte[data.length]; for (int i1 = 0; i1 < data.length; i1++) byteArray_data[i1] = (byte) data[i1]; dos.write(byteArray_data, 0, 16); dos.close(); byte[] ENCRYPTED_DATA = bos.toByteArray(); for (int i1 = 0; i1 < 8; i1++) { keyForDecription[i1] = (byte) (FixedKey >> (8 * i1)); keyForDecription[i1 + 8] = (byte) (VariableKey >> (8 * i1)); } SecretKeySpec skeySpec_decryption = new SecretKeySpec(keyForDecription, "AES"); Cipher cipher1 = Cipher.getInstance("AES/ECB/NoPadding"); cipher1.init(Cipher.DECRYPT_MODE, skeySpec_decryption); ByteArrayInputStream bis = new ByteArrayInputStream(ENCRYPTED_DATA); CipherInputStream cis = new CipherInputStream(bis, cipher1); DataInputStream dis = new DataInputStream(cis); byte[] DECRYPTED_DATA = new byte[byteArray_data.length]; dis.readFully(DECRYPTED_DATA, 4, 16); cis.close(); 
+4
source share
1 answer

Since you initialize the cipher with a key of 16 bytes (128 bits), it uses this as the key size implicitly.

Regarding block size, the JCA specification says:

AES is a 128-bit block cipher that supports keys of 128, 192, and 256 bits.

Thus, the block size is always 128 bits.

+8
source

Source: https://habr.com/ru/post/1469534/


All Articles