En la generación de claves se utilizan números aleatorios seguros, que son números aleatorios que se generan en base a una semilla. Esto permite crear algoritmos seguros, pues será muy difícil determinar los valores generados sin conocer la semilla.
El paquete java.security
proporciona las siguientes clases para la gestión de claves:
- El interface
Key
, permite la representación de claves, su almacenamiento y envío de forma serializada dentro de un sistema. Se trata de un interfaceSerializable
y proporciona entre otros los siguientes métodos:getAlgorithm()
. Devuelve el nombre del algoritmo con el que se ha generado la clave (RSA, DES, etc.).getEncoded()
. Devuelve la clave como un array de bytes.getFormat()
. Devuelve el formato con el que está codificada la clave.
- La clase
KeyPairGenerator
permite la generación de claves públicas y privadas (asimétricas). Genera objetos del tipoKeyPair
, que a su vez contienen un objeto del tipoPublicKey
y otro del tipoPrivateKey
.- El método
initialize()
permite establecer el tamaño de la clave y el número aleatorio a partir del cual será generada.
- El método
- La clase
KeyGenerator
permite la generación de claves privadas (simétricas). Genera objetos de tipoSecretKey
.- El método
init()
permite establecer el tamaño de la clave y el número aleatorio a partir del cual será generada.
- El método
- La clase
SecureRandom
permite generar números aleatorios seguros.- El método
setSeed()
permite establecer el valor de la semilla. - El constructor
secureRandom()
utiliza la semilla del proveedor SUN. - El método
next()
y elnextBytes()
obtienen el valor de los números generados.
- El método