2009-11-10 150 views

回答

32

对于为十六进制字符串

import java.security.*; 
public class Test { 
    public static void main(String[] args) throws NoSuchAlgorithmException, NoSuchProviderException { 
     KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA"); 
     keyGen.initialize(512); 
     byte[] publicKey = keyGen.genKeyPair().getPublic().getEncoded(); 
     StringBuffer retString = new StringBuffer(); 
     for (int i = 0; i < publicKey.length; ++i) { 
      retString.append(Integer.toHexString(0x0100 + (publicKey[i] & 0x00FF)).substring(1)); 
     } 
     System.out.println(retString); 
    } 
} 

输出作为字节输出值

import java.security.*; 
import java.security.*; 
public class Test { 
    public static void main(String[] args) throws NoSuchAlgorithmException, NoSuchProviderException { 
     KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA"); 
     keyGen.initialize(512); 
     byte[] publicKey = keyGen.genKeyPair().getPublic().getEncoded(); 
     StringBuffer retString = new StringBuffer(); 
     retString.append("["); 
     for (int i = 0; i < publicKey.length; ++i) { 
      retString.append(publicKey[i]); 
      retString.append(", "); 
     } 
     retString = retString.delete(retString.length()-2,retString.length()); 
     retString.append("]"); 
     System.out.println(retString); //e.g. [48, 92, 48, .... , 0, 1] 
    } 
} 
+0

非常感谢您! 如果我应该得到这样的结果[48,-137,-97,49,13,6,8,42,-122,72,-122,-9,13,2,3,15,4,0, 3,-132,-115,0,48,-127]我应该只使用toString方法而不是 retString.append(Integer.toHexString(0x0100 +(publicKey [i]&0x00FF))。substring(1)); ?? – Angela 2009-11-10 18:54:05

+0

检查第二个代码清单。 – jitter 2009-11-10 19:07:30

+1

如果我想以PEM格式输出,那我该怎么做? – Yatin 2015-05-20 04:13:20