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;
}
未完.................