| ||||
| ||||
Здравствйте. Среди стандартных примеров библиотеки JCP есть SessionEncrypt. Вопрос такой: почему длина зашифрованного ключа (wrappedKey) равна 42 байтам, хотя в соответствии с пп 6.1-6.4 RFC 4357 (Additional Cryptographic Algorithms for Use with GOST 28147-89, GOST R 34.10-94, GOST R 34.10-2001, and GOST R 34.11-94 Algorithms), она должна быть равна 44 байтам (UKM(8) | CEK_ENC(32) | CEK_MAC(4)). cipher.init(Cipher.WRAP_MODE, alisaAgree); byte[] wrappedKey = cipher.wrap(simm); // wrappedKey.length = 42 Может я что-то упустил? Как мне имея 44-байтный шифр симметричного ключа его расшифровать, и соответственно наоборот? | ||||
Ответы: | ||||
| ||||
Да, длина действительно равна 42 байтам. Это происходит из-за того, что зашифрованный ключ вместе с имитовставкой хранится в форме ASN-структуры. Строка инициализации(8 байт) подается после создания объекта шифрования для определения его параметров(см. документацию к JCP). Расшифровать ключ вы можете с помощью метода unwrap класса Cipher, передав соответствующие параметры. | ||||