现在要用java实现RSA算法,但是现在公钥是已知的(放到一个文件里,不是通过随机生成的),现在怎么通过java的api来算私钥。
public static void generateKey() throws Exception {
KeyPairGenerator gen = KeyPairGenerator.getInstance(RSA);
gen.initialize(512, new SecureRandom());
KeyPair keyPair = gen.generateKeyPair();
uk = keyPair.getPublic();
rk = keyPair.getPrivate();
}
上面的代码部分的密钥对是随机生成的,现在要根据已知的公钥来生成私钥 ,该怎么弄?

解决方案 »

  1.   

    没分了。在这问个问题
    服务端
    import java.net.*;
    import java.io.*;
    import java.util.*;
    class fanserver
    {
    static List<fanclient> client = new ArrayList<fanclient>();
    public static void main(String[] args)throws Exception 
    {
    Socket s;
    ServerSocket ss = new ServerSocket(4445);
    while(true){
    s = ss.accept();
    System.out.println("haha...");
    server ser = new server(s);
    new Thread(ser).start();
    client.add(ser);
    }
    /* BufferedReader br = 
    new BufferedReader(new InputStreamReader(System.in));
    BufferedWriter bwout = 
    new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
    BufferedReader brin = 
    new BufferedReader(new InputStreamReader(s.getInputStream()));
    String str = null;
    while((str=brin.readLine())!=null){
    // System.out.println(str);
    bwout.write(str);
    bwout.flush();
    bwout.newLine();
    }
    */

    // s.shutdownOutput();


    }
    }
    class server implements Runnable
    {
    private Socket s;
    server(Socket s){
    this.s = s;
    }
    public void run(){
    try{

    BufferedWriter bwout = 
    new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
    BufferedReader brin = 
    new BufferedReader(new InputStreamReader(s.getInputStream()));

    String str = null;
    while((str=brin.readLine())!=null){
    System.out.println(str);
    bwout.write(str);
    bwout.newLine();

    bwout.flush();
    }
    // s.shutdownOutput();

    }
    catch(Exception e){}
    }
    }客户端import java.net.*;
    import java.io.*;
    class fanclient 
    { public static void main(String[] args)throws Exception
    {
    Socket s = new Socket("192.168.30.129",4445);
    BufferedReader br = 
    new BufferedReader(new InputStreamReader(System.in));
    BufferedWriter bwout = 
    new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
    BufferedReader brin = 
    new BufferedReader(new InputStreamReader(s.getInputStream()));
    new Thread(new client(brin)).start();
    String str = null;
    while((str=br.readLine())!=null){

    bwout.write(str);

    bwout.newLine();
    bwout.flush();

    }

    // s.shutdownOutput();

    // String line = brin.readLine();
    // System.out.println(line);


    }
    }
    class client implements Runnable
    {
    private BufferedReader brin;
    client(BufferedReader brin)
    {
    this.brin = brin;
    }
    public void run(){
    String line = null;
    try{
    while((line=brin.readLine())!=null){
    System.out.println(line);
    }
    }catch(Exception e){}
    }
    }
    我同时启动好几个客户端,想让客户端通过服无端互相接收到信息,怎么处理,