web-dev-qa-db-fra.com

Comment convertir un tableau d'octets en type PrivateKey ou PublicKey?

J'utilise l'algorithme RSA pour générer des clés publiques et privées

final KeyPairGenerator keyGen = KeyPairGenerator.getInstance(ALGORITHM);
keyGen.initialize(1024);
final KeyPair key = keyGen.generateKeyPair();
final PrivateKey privateKey=key.getPrivate();
final PublicKey publickey=key.getPublic();

après cela, ces clés sont encodées à l'aide de l'encodeur Base64 et l'enregistrent dans la base de données.

Comment convertir cette chaîne encodée en clé privée et publique Tapez Java consiste à déchiffrer le fichier. Lors du décodage de cette chaîne à l'aide de Base64Decoder obtiendra un tableau d'octets. Comment convertir ce tableau d'octets en public ou privé type de clé?

24
sufala

Si vous avez un octet [] représentant la sortie de getEncoded () sur une clé, vous pouvez utiliser KeyFactory pour le transformer en objet PublicKey ou PrivateKey.

byte[] privateKeyBytes;
byte[] publicKeyBytes;
KeyFactory kf = KeyFactory.getInstance("RSA"); // or "EC" or whatever
PrivateKey privateKey = kf.generatePrivate(new PKCS8EncodedKeySpec(privateKeyBytes));
PublicKey publicKey = kf.generatePublic(new X509EncodedKeySpec(publicKeyBytes));
45
nsayer