2013-06-12 3 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(); 
    } 
} 

하지만 난 당신이 바이트 배열의 진수 represenation이

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

+0

base64 인코딩/디코딩 사용 – Patashu

답변

1

을 도울 것을 달성 할 수 괜찮나이 숫자 값을 생성하지 않습니다 나머지는 의사 소통을위한 base64입니다. HTTP 헤더에 넣기 위해 base64를 사용하여 비밀번호를 인코딩하는 HTTP 기본 인증입니다.

0

당신이 사용할 수있는 사용하려는 경우 호야가 나에게

관련 문제