簡體   English   中英

如何以人類可讀的格式轉換公鑰和簽名值

[英]How to convert public key and signature value in human readable format

我正在嘗試以可讀格式生成可用於休息服務的公共密鑰和簽名。我編寫了以下代碼。

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();
    }
}

但這並沒有產生字母數字值。我該如何實現。請幫助我

如果要字節數組的十六進制表示,請使用

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

您可以使用base64進行休息通信。 另一個示例是HTTP Basic身份驗證,該身份驗證使用base64編碼密碼並將其放入HTTP標頭中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM