RSA 算法根据公钥(私钥)文件路径获取私钥(公钥)值

来源:互联网 发布:联排牙的利与弊 知乎 编辑:程序博客网 时间:2024/05/20 06:22

最近做某某银行对接的时候需要用到 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;
  }



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


0 0