日期:2014-05-20  浏览次数:20893 次

用JAVA生成的密钥是什么格式,怎么输出啊
//生成AES密钥
KeyGenerator   keygen   =   KeyGenerator.getInstance( "AES ");
SecureRandom   random   =   new   SecureRandom();
keygen.init(random);
Key   key   =   keygen.generateKey();

//生成RSA密钥
KeyPairGenerator   pairgen   =   KeyPairGenerator.getInstance( "RSA ");
SecureRandom   random   =   new   SecureRandom();
pairgen.initialize(KEYSIZE,   random);
KeyPair   keyPair   =   pairgen.generateKeyPair();
Key   publicKey   =   keyPair.getPublic();
Key   privateKey   =   keyPair.getPrivate();
像上面生成的密钥怎么将它们转换成合适的格式输出到一个JTextArea中。

如果我把生成密钥以文件形式输出:
ObjectOutputStream   out   =   new   ObjectOutputStream(new   FileOutputStream
( "keyfile "));
out.writeObject(key);
out.close();

打开keyfile是乱码,这个密钥文件到底是以什么格式存储的呢




------解决方案--------------------
/**
* 十六进制打印
*
* @param b
* 字节
* @return 字符串
*/
public static String toHex(byte b) {
int n = b > = 0 ? b : 256 + b;
String str = Integer.toHexString(n);
if (str.length() == 1)
str = "0 " + str;

return str.toUpperCase();
}

/**
* 十六进制打印
*
* @param b
* 字节数组
* @return
*/
public static String toHex(byte[] b) {
String str = " ";

for (int i = 0; i < b.length; i++) {
str += toHex(b[i]);
}

return str;
}
------解决方案--------------------
RSA的私钥和公钥就是一串数字,比如公钥最常用的是65537,私钥也是一个非常大的数字,只不过现在把这个数字存储到一对公钥私钥里了。我记得只要把那个钥匙类toString()或者是什么的方法就可以显示出这个数字。存的文件你还是要用Object流读取,然后转化成公钥或私钥,再把内容取出来。