我用java的RSA加密,生成出来的密文,觉得好像是乱码呢,这样的“=迻江MM薏$‵覡Qo喱吟伿跪rn恞a謄囗框#?B? [?鄏嘯??Jmg”
我的公钥私钥出来都是这样的字符“CSqGSIb3DQEBAQUAA4GNADCBiQKBgQCRWOyZPV83xq4BlMRTElxK”,因为我的密文还要经过别的编码,那种乱码不知道会不会出错,怎样才能给把密文转换成公钥私钥这种样子呢?我是新手,也不太懂,公钥私钥的格式是16进制的吧?
代码我是用的梁栋先生的例子
http://snowolf.iteye.com/blog/381767RSA

解决方案 »

  1.   

    RSA 几乎不会用来做加解密使用,一般用于数字签名使用居多。对于密码学这一块,在 java 中都是以 byte[] 进行处理的,最后如何编码成为文本化字符显示,是自行考虑的,加解密 API 中并不负责这一部分。
      

  2.   

    下个包:commons-codec.jar
    具体使用也很简单,私钥转换成16进制编码
    KeyPairGenerator keyPairGenerator = KeyPairGenerator
    .getInstance(KEY_ALGORITHM);
    keyPairGenerator.initialize(KEY_SIZE);
    KeyPair keyPair = keyPairGenerator.generateKeyPair();
    RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
    RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
    String pub_hex_key = Hex.encodeHexString(publicKey.getEncoded());
    String pri_hex_key = Hex.encodeHexString(privateKey.getEncoded());