String s="Hello World!你好!";
FileInputStream f=new FileInputStream("Skey_RSA_pub.dat");        
ObjectInputStream b=new ObjectInputStream(f);        
RSAPublicKey  pbk=(RSAPublicKey)b.readObject( );
BigInteger e=pbk.getPublicExponent();        
BigInteger n=pbk.getModulus();
byte ptext[]=s.getBytes("UTF8");  //换成gbk也不行      
BigInteger m=new BigInteger(ptext);
BigInteger c=m.modPow(e,n);
...................这样加密出来后解密出来有乱码,怎么解决?

解决方案 »

  1.   

    有个新的问题,就是当字符串第一个字符是中文时(如:Strinig str = "我hdiayyhd")解密出来会出现乱码,其他情况下(如:String str = "sdhau我是谁";)解密出来中文可以正常显示,不知道怎么回事
      

  2.   

    哈哈 解决了 
    先把汉字用Java.net.URLEncode 处理一下 
    然后加密 刚刚处理或的字符串(此时已经不含中文了 中文已经处理成 类似"%E5%81%A5%E5%BA%B7%E5%9C%B0"的格式了) 
    用rsa解密后 再用java.net.URLDecode处理一下 就把中文还原回来了这只是一个解决方案
    还有N多的方法 大同小异