2013-06-12 24 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标头中

相关问题