Java: ¿Cómo puedo generar PrivateKey a partir de una cadena?
Estoy tratando de codificar un mensaje conSH1 RSA
pero no tengo experiencia con el tema de seguridad, excepto cierta información básica sobreRSA
. Me han dado una clave privada comoString
. He logrado escribir el siguiente bloque de código para hacer el trabajo, pero no estoy seguro de si estoy haciendo el trabajo de forma segura y correcta.
No soy un experto, pero supongo que poner mi clave privada como String en el código no es seguro. ¿Alguien puede guiarme?
String privateKeyString = "mykeyhere...";
byte[] privateKeyBytes = privateKeyString.getBytes();
String encodedPrivateKey = Base64.encodeToString(privateKeyBytes, Base64.URL_SAFE);
KeyFactory factory = KeyFactory.getInstance(RSA);
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(encodedPrivateKey.getBytes());
RSAPrivateKey privateKey = (RSAPrivateKey) factory.generatePrivate(keySpec);
Signature instance = Signature.getInstance(ALGORITHM);
instance.initSign(privateKey);
instance.update(content.getBytes());
return new String(instance.sign());
Mi clave privada está en forma como:
"-----BEGIN PRIVATE KEY-----\n"+
"MIIE...\n"+
"cH0iRj...\n"+
"O0Hhj...\n"+
.
.
.
"fG6...\n"+
"B6/hF...\n"+
"3Mq38...\n"+
"-----END PRIVATE KEY-----\n"