RSA加密界面大量操縱,報錯的問題

public String encrypt(String publicKeystore, String plainText) {
try {
FileReader fr = new FileReader(publicKeystore);
BufferedReader br = new BufferedReader(fr);
String publicKeyString = "";
String str;
while ((str = br.readLine()) != null) {
publicKeyString += str;
}
br.close();
fr.close();
// 每次操作都要init,頻繁的操作會造成報錯,其實這裏只要在初始化的構造函數裏,init就可以解決報錯的問題。
//cipher.init(Cipher.ENCRYPT_MODE, getPublicKey(publicKeyString));
//byte[] enBytes = cipher.doFinal(plainText.getBytes());
//return (new BASE64Encoder()).encode(enBytes).replaceAll("\r\n", "");
// 解決超過117個字符出錯的問題
byte[] enBytes = null;
// StringBuilder sb = new StringBuilder();
for (int i = 0; i < plainText.getBytes().length; i += 64) {
byte[] doFinal = cipher.doFinal(ArrayUtils.subarray(plainText.getBytes(), i, i + 64));
// sb.append(new String(doFinal));
enBytes = ArrayUtils.addAll(enBytes, doFinal);
}
return (new BASE64Encoder()).encode(enBytes).replaceAll("\r\n", "");
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章