2013-06-12 67 views
1

我想生成可讀格式的公鑰和簽名,可以在休息服務中使用。我寫下面的代碼。如何將公鑰和簽名值轉換爲人類可讀格式

public static void GenearetSignature(String url,String signatureValue,String publicKey){ 
    KeyPairGenerator keyGen; 
    try { 
     keyGen = KeyPairGenerator.getInstance("DSA", "SUN"); 

     SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN"); 
     keyGen.initialize(1024, random); 
     KeyPair pair = keyGen.generateKeyPair(); 
     PrivateKey priv = pair.getPrivate(); 
     PublicKey pub = pair.getPublic(); 
     System.out.println("Priavte key"+priv); 
     System.out.println("Public key"); 
     Signature dsa = Signature.getInstance("SHA1withDSA", "SUN"); 
     dsa.initSign(priv); 
     dsa.update(url.getBytes()); 
     byte[] signatureValueArray = dsa.sign(); 
     signatureValue=new String(signatureValueArray,"UTF8"); 
     byte[] publicKeyArray=pub.getEncoded(); 
     publicKey = new String(publicKeyArray); 
     System.out.println("publicKey is "+publicKey); 
     System.out.println("signatureValue is "+signatureValue); 
    } catch (NoSuchAlgorithmException ex) { 
     // TODO Auto-generated catch block 
     ex.printStackTrace(); 
    } catch(Exception e){ 
     e.printStackTrace(); 
    } 
} 

但我可以。如何做到這一點。請幫我

+0

使用base64編碼/解碼 – Patashu

回答

1

如果你想字節數組的十六進制represenation使用

javax.xml.bind.DatatypeConverter.printHexBinary(byte[] array)

0

可以使用,這是不按字母數字值產生base64用於通過休息進行通信。另一個例子是HTTP基本認證,它使用base64將密碼編碼到HTTP標頭中

相關問題