Если вы обратитесь к rfc5480 , вы увидите, что байты, полученные из метода PublicKey::getEncoded
, на самом деле кодируются с помощью DER SubjectPublicKeyInfo
:
SubjectPublicKeyInfo ::= SEQUENCE {
algorithm AlgorithmIdentifier,
subjectPublicKey BIT STRING
}
И subjectPublicKey
будет ECPublicKey в кодировке DER OCTET String, и этот ключ состоит из первого байта, который определяет, сжат или нет ключ, а затем из координат X, Y точки EC открытого ключа.
А длина полей X, Y зависит от того, на какой кривой определена точка. Для вашей кривой это будет 32 байта для каждой координаты. Поэтому в несжатом виде необработанный ключ будет иметь 65 байтов (1 + 32 + 32). Разница между сжатой и несжатой формами была объяснена в этом вопросе .