1. 程式人生 > >RSA 演算法根據公鑰(私鑰)檔案路徑獲取私鑰(公鑰)值

RSA 演算法根據公鑰(私鑰)檔案路徑獲取私鑰(公鑰)值

最近做某某銀行對接的時候需要用到 RSA 演算法加簽驗籤, 這裡把用到的工具方法整理下

根據私鑰檔案路徑讀取私鑰:

public static String getSignPrivateKey4Client(String keyPath){
      StringBuffer privateBuffer=new StringBuffer();
      try {
          //InputStream inputStream = Thread.currentThread().getContextClassLoader()
          //       .getResourceAsStream(signPrivatePath);
          FileInputStream fi=new FileInputStream(keyPath);
          InputStreamReader inputReader = new InputStreamReader(fi);
          BufferedReader bufferReader = new BufferedReader(inputReader);
          // 讀取一行
          String line = "";
          while ((line=bufferReader.readLine())!=null) {
              privateBuffer.append(line);
          }
      } catch (Exception e) {
          e.printStackTrace();
      }
      return privateBuffer.toString();
  }

根據公鑰檔案路徑讀取公鑰:

 public static String getVerifyKey4Client(String keyPath){
      String key="";
      try {
          CertificateFactory cf = CertificateFactory.getInstance("X.509");
          //InputStream in = Thread.currentThread().getContextClassLoader()
          //      .getResourceAsStream(signPublicPath);
          FileInputStream fi=new FileInputStream(keyPath);
          //生成一個證書物件並使用從輸入流 inStream 中讀取的資料對它進行初始化。
          Certificate c = cf.generateCertificate(fi);
          PublicKey publicKey = c.getPublicKey();
          key=new BASE64Encoder().encodeBuffer(publicKey.getEncoded());
      } catch (Exception e) {
          e.printStackTrace();
      }
      return key;
  }

json 資料轉map

  public static Map<String, Object> parseJSON2Map(String jsonStr){
      Map<String, Object> map = new HashMap<String, Object>();
      //最外層解析
      JSONObject json = JSONObject.fromObject(jsonStr);
      for(Object k : json.keySet()){
          Object v = json.get(k);
          //如果內層還是陣列的話,繼續解析
          if(v instanceof JSONArray){
              List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
              Iterator<JSONObject> it = ((JSONArray)v).iterator();
              while(it.hasNext()){
                  JSONObject json2 = it.next();
                  list.add(parseJSON2Map(json2.toString()));
              }
              map.put(k.toString(), list);
          } else {
              map.put(k.toString(), v);
          }
      }
      return map;
  }

未完.................