Sto tentando di codificare un messaggio con SH1 RSA
ma non ho esperienza con soggetti di sicurezza tranne alcune informazioni di base su RSA
. Ho ricevuto una chiave privata come String
. Sono riuscito a scrivere il seguente blocco di codice per fare il lavoro ma non sono sicuro se sto facendo il lavoro in modo sicuro e corretto.Java: come posso generare PrivateKey da una stringa?
Non sono un esperto ma mettere la mia chiave privata come stringa nel codice non è sicuro, suppongo. Qualcuno può guidarmi?
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());
La mia chiave privata è in forma come:
"-----BEGIN PRIVATE KEY-----\n"+
"MIIE...\n"+
"cH0iRj...\n"+
"O0Hhj...\n"+
.
.
.
"fG6...\n"+
"B6/hF...\n"+
"3Mq38...\n"+
"-----END PRIVATE KEY-----\n"
cos'è il privateKeyString? una password? o una vera chiave privata RSA numerica? e in che formato viene dato? Base64? Esadecimale? Altro? –
@konstantinosChalkias, ho aggiunto il mio formato chiave. –
Hai provato Keystore? http://stackoverflow.com/questions/9890313/how-to-use-keystore-in-java-to-store-private-key#answer-27869798 –