Spec-Zone .ru
спецификации, руководства, описания, API
|
Затем, VerSig
потребности импортировать закодированные байты с открытым ключом из файла, определенного как первый параметр командной строки и преобразовать их в a PublicKey
. A PublicKey
необходим потому что именно это Signature
initVerify
метод требует, чтобы инициализировать Signature
объект для проверки.
Во-первых, читайте в закодированных байтах с открытым ключом.
FileInputStream keyfis = new FileInputStream(args[0]); byte[] encKey = new byte[keyfis.available()]; keyfis.read(encKey); keyfis.close();
Теперь байтовый массив encKey
содержит закодированные байты с открытым ключом.
Можно использовать a KeyFactory
class, чтобы инстанцировать открытого ключа DSA от его кодирования. KeyFactory
class обеспечивает преобразования между непрозрачными ключами (типа Key
) и ключевые спецификации, которые являются прозрачными представлениями базового ключевого материала. С непрозрачным ключом можно получить имя алгоритма, имя формата, и закодировали ключевые байты, но не ключевой материал, который, например, может состоять из ключа непосредственно и параметров алгоритма, используемых, чтобы вычислить ключ. (Отметьте это PublicKey
, потому что это расширяется Key
, самостоятельно a Key
.)
Так, сначала Вы нуждаетесь в ключевой спецификации. Можно получить один через следующий, предполагая, что ключ был закодирован согласно стандарту X.509, который имеет место, например, если ключ был сгенерирован со встроенным генератором пары ключей DSA, предоставленным провайдером SUN:
X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(encKey);
Теперь Вы нуждаетесь в a KeyFactory
объект сделать преобразование. Тот объект должен быть тем, который работает с ключами DSA.
KeyFactory keyFactory = KeyFactory.getInstance("DSA", "SUN");
Наконец, можно использовать KeyFactory
объект генерировать a PublicKey
от ключевой спецификации.
PublicKey pubKey = keyFactory.generatePublic(pubKeySpec);