У меня есть фрагмент кода, в котором я оборачиваю свой симметричный ключ (AES) ключом AES:
- swkKey: это ключ AES, используемый для упаковки.
- ключ: ключ, который нужно обернуть.
Код:
SecretKey swkKeySpec = new SecretKeySpec(swkKey, 0, swkKey.length, "AES");
Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding", "BC");
final int ivLength = 12;
final IvParameterSpec iv = createIV(ivLength);///Creates a new array.
cipher.init(Cipher.WRAP_MODE, swkKeySpec, iv);
SecretKey sKeySpec = new SecretKeySpec(key, 0, key.length, "AES");
byte[] wrappedAppKey = cipher.wrap(sKeySpec);`
Какой будет длина wrappedAppKey, если ключ равен 256 бит, а swkkey - 256 бит. Может ли завернутый ключ быть больше 32 байтов? Обратите внимание, в этом случае я получаю следующие журналы:
key length: 32(key to be wrapped)
swkKey length: 32(key used to wrap)
wrappedAppKey size: 48(final wrapped key output).