14.09.2006 14:30:21шифрование симметричного ключа Ответов: 1
Евгений
Здравствйте.
Среди стандартных примеров библиотеки 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-байтный шифр симметричного ключа его расшифровать, и соответственно наоборот?
 
Ответы:
15.09.2006 17:42:24andros
Да, длина действительно равна 42 байтам. Это происходит из-за того, что зашифрованный ключ вместе с имитовставкой хранится в форме ASN-структуры. Строка инициализации(8 байт) подается после создания объекта шифрования для определения его параметров(см. документацию к JCP). Расшифровать ключ вы можете с помощью метода unwrap класса Cipher, передав соответствующие параметры.