1
我需要首先使用SHA-1摘要算法對字符串進行數字簽名,然後應用RSA算法,使用PrivateKey對其進行簽名。我已經在我的數據庫中存儲了PrivateKey作爲base64中的數據類型char(250)。我的問題是,我不知道如何將它轉換成一個專用密鑰將其用於簽署:對我應用了SHA-1散列算法將字節[]轉換爲java中的PrivateKey以進行數字簽名
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, privateKey);
byte[] cipherText = cipher.doFinal(digest);
文摘是一個字節數組:
MessageDigest md = MessageDigest.getInstance("SHA-1");
byte [] ba = cadena.getBytes();
byte [] digest = md.digest(ba);
這是我想到的解決方案,但如果有人有更好的解決方案,我將不勝感激。
什麼是關鍵存儲類型64底層編碼的? – user1084509
@ user1084509我不認爲密鑰庫類型與編碼有任何關係。編碼是將一種形式的數據轉換爲另一種形式的手段。您的密鑰庫類型可能是[本文(鏈接)]中提到的其中一種類型(http://docs.oracle.com/javase/1.4.2/docs/guide/security/CryptoSpec.html#AppA) – srkavin
好的,謝謝你,現在我明白了。我有關於這一行的另一個問題:KeyStore.PrivateKeyEntry pkEntry =(KeyStore.PrivateKeyEntry)ks.getEntry(PRIVATE_KEY_ALIAS,password); ...密碼預計是類型KeyStore.ProtectionParameter,我該如何做這種轉換?我的密碼是一組字符或一個字符串。 – user1084509