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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章