2017-03-24 92 views
0

我必須在我的項目中使用DSA(數字簽名算法),使用Java實現。我有一個問題,我無法存儲DSA的公鑰和私鑰鍵入PublicKey & PrivateKey)。當我將它存儲爲blob時,無法檢索到它的形式(即PublicKey)。誰能幫我?在mysql中存儲和檢索DSA公鑰和私鑰

KeyPairGenerator pairgen = KeyPairGenerator.getInstance("DSA"); 
SecureRandom random = new SecureRandom(); 
pairgen.initialize(KEYSIZE, random); 
KeyPair keyPair = pairgen.generateKeyPair(); 
PublicKey pu=keyPair.getPublic(); 

我必須存儲這件事,並有使用pu.getEncoded()檢索

+0

varchar'有什麼問題 – Ravi

+0

使用varchar時數據列太長 –

+0

不清楚你在問什麼。 1)如何在Java運行時之外存儲'PublicKey'? *(提示:作爲字節)* 2)如何從'PublicKey'獲取'byte []'? 3)如何在數據庫中保存'byte []'? 4)如何從數據庫加載'byte []'? 5)如何從'byte []''獲得'PublicKey'?這些是步驟,所以請編輯問題並詢問**具體**問題,哪個部分讓您感到困擾。或者更好的是,一旦你在腦海中更清楚地知道你在找什麼,就可以在線搜索它。 – Andreas

回答

0

商店作爲byte[]

要恢復到公鑰對象加載的字節數組,並進行下面的調用

KeyFactory kf = KeyFactory.getInstance("DSA"); 
PublicKey pu = kf.generatePublic(new X509EncodedKeySpec(keyBytes)); 

您也可以選擇使用Base64編碼。