Criptografía

Buenas Noches: Actualmente estoy desarrollando un sistema, donde manejo llaves publicas y privadas. El problema que tengo es que hay un programa que genera dichas llaves, pero la llave privada la genera encriptada con 3DES, he probado desencriptarla, he leído que la contraseña del 3DES es de 24 Bytes, la encripción de la llave privada se hizo con una contraseña de 9 Bytes, por lo que no se que debo hacer, copiar esos 9 Bytes hasta completar los 24 Bytes o simplemente llenar el restante con valores vacíos, además, tengo entendido que el formato de dicha llave está en DER.
He generado llaves privadas pero sin ser encriptadas en 3DES, esta la someto a comprobación mediante un programa que hice para ver si puede ser utilizada como llave privada y no me manda error, en cambio la supuesta llave encriptada al someterla a la misma prueba manda error. He utilizado los ejemplos de un libro que acabo de adquirir de java, es el Java Cryptography Extensions (Practical Guide for Programmers) de Jason Weiss. Pero no me funciona.
No se que esté haciendo mal, si me pudiera orientar estaría muy agradecido. De antemano muchas gracias y le envío un cordial saludo.

1 respuesta

Respuesta
1
¿Qué programa usas, keygen de java?
¿Generas certificados digitales o solo claves?
No se preocupe, muchas gracias de todos modos, lo bueno que me contestó y se vio el interés por parte suya, ya he realizado muchas preguntas aquí, y usted es el primero que me ha contestado =D, muchas gracias
No, no uso el keygen, ya que la clave es generada externamente, la clave publica y privada no las genero yo, las genera otra aplicación. Solo el contenido de la llave privada es la que me interesa, pero la aplicación genera esa clave encriptada con 3DES. He hecho pruebas generando yo una llave privada y con la aplicación generar otra llave privada, después ambas llaves privadas las trato de cargar y solo la que yo genero es la que se carga correctamente, en cambio la que genera la aplicación no. Para generar con la aplicación un par de llaves, es necesario introducir una contraseña de llave privada. Yo no genero certificados, solo tengo que obtener la llave privada desencriptada.
Pues me parece que no te voy a poder ayudar mucho.
Hay multitud de posibilidades, pasando por los métodos de encriptar o guardar la clave, de forma binario o codificada en base 64.
Por otra parte, java creo que cargará la clave privada solo con un formato reconocido por ella. Quizás tengas que tratar la clave generada por la aplicación antes de abrirla.
De todas formas, cuando yo trabajé con criptografía había un programa llamado keytoolgui que era una versión de keytool gráfica.
Prueba a intentar importar la clave privada con esa aplicación. Si lo consigues, quizás estés pasando algo por alto.
Creo que al cargar había que especificar el tipo de clave a cargar por ejemplo.
¿Y con respecto a la longitud de la contraseña de la llave privada? Lo que no se es que se hace a los bytes faltantes, si tengo una contraseña de 9 bytes y se supone que el triple DES su contraseña debe ser de 24 bytes, no se que se le hace a los 15 bytes restantes, si se llena con algunos bytes en especial o si se copia la misma contraseña hasta llenar el arreglo de 24 bytes.
Porque por ejemplo, ya desencripte el archivo empleando una contraseña de 9 bytes, pero al momento de verificar si se puede cargar me manda un InvalidKeyException: Invalid Key Format. Estuve pensado, que tal vez sea por la contraseña que ocupo, ya que copio la misma contraseña hasta ocupar los 24 bytes.
Ahora, con la aplicación, genero una nueva llave privada, pero ahora empleando una contraseña de 24 bytes, pero al momento de desencriptarlo y el resultado verificar si se carga correctamente, me manda un IOException: DERInputStream.length(). lengthTag =97, too big.
Siento que es algo que estoy haciendo mal con la llave, o que tenga que emplear algún formato de salida. La verdad en Java casi no tengo experiencia, por eso me cuesta mucho. Pues muchas gracias y espero que me pueda orientar en el tamaño, o como le ha hecho usted para encriptar con 3DES y con contraseñas tecleadas por el usuario.
Muchas gracias. Espero su respuesta.
Me parece que estoy perdido. No se si puedo seguir ayudándote mucho más.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas