Android - ถามเกี่ยวกับ การเรียกใช้ Encrypt function ในการเข้ารหัสข้อความด้วย RSA (public key) มันแจ้ง unhandled exception java.io.ioexception
อยากสอบพี่ๆผุรู้หน่อยครับ
พอดีว่า ผมต้องการทำการ เข้า รหัสข้อความด้วย RSA ซึ่งพอดีได้ function นี้มา
Code (Android-Java)
public String encrypt(String filePath, String original) throws IOException, NoSuchAlgorithmException, InvalidKeySpecException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
InputStream instream = new FileInputStream(filePath);
byte[] encodedKey = new byte[instream.available()];
instream.read(encodedKey);
X509EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(encodedKey);
KeyFactory kf = KeyFactory.getInstance("RSA");
PublicKey pkPublic = kf.generatePublic(publicKeySpec);
Cipher pkCipher = Cipher.getInstance("RSA/ECB/PKCS1PADDING");
pkCipher.init(Cipher.ENCRYPT_MODE, pkPublic);
byte[] encryptedInByte = pkCipher.doFinal(original.getBytes());
String encryptedInString = new String(Base64Coder.encode(encryptedInByte));
return encryptedInString;
}
แต่ว่าเกิดปัญหาคือ เรียกใช้งานแล้ว Error อ่ะคับ
"unhandled exception java.io.ioexception"
โดยที่ผม เรียก Textview_name = encrypt(Path_name, Clear_text);
ซึ่งตรงนี้ไม่แน่ใจว่า ต้องเรียกใช้ยังไง หรือ ต้องใช้คำสั่งที่ถูก หรือ เพิ่มส่วนไหนTag : Mobile, Android, JAVA
Date :
2013-07-23 23:39:05
By :
@tou
View :
1973
Reply :
4
ตอนเรียกใช้งาน ก็ Error ก่อนแล้วอ่าคับ ถ้ากรณีที่จา debug นิต้องทำยังไงมั้ง ผมใช้ Android studio อยู่
จาก Function encrypt นิ ผมต้อง debug ยังไงคับ
ขอบคุณครับ
Date :
2013-07-24 11:43:22
By :
@tou
ขอตอบเองน่ะคับ
ที่เกิดปัญหาเนื่องจากว่า มันไม่สามารถ เรียกใช้งาน Library ที่ถูกเรยกใช้งานตาม Function encrypt() medthod นั้นได้ เลยต้องใช้ Try ... catch function เข้ามาแก้ไข เพิ่มเติมตรงนี้ โดย
Code (Java)
try{ //
Environment.getDataDirectory();
String filecopy = copyFile(this, "app.androidthai.VoteManySMS", filePath);
String text_cipher = encrypt(filecopy, original);
encrypt_text.setText(text_cipher);
} catch (FileNotFoundException ep){
encrypt_text.setText(ep.toString());
} catch (IOException ep){
encrypt_text.setText(ep.toString());
}catch (NoSuchAlgorithmException ep){
encrypt_text.setText(ep.toString());
}catch (InvalidKeySpecException ep){
encrypt_text.setText(ep.toString());
}catch (NoSuchPaddingException ep){
encrypt_text.setText(ep.toString());
}catch (InvalidKeyException ep){
encrypt_text.setText(ep.toString());
}catch (IllegalBlockSizeException ep){
encrypt_text.setText(ep.toString());
}catch (BadPaddingException ep){
encrypt_text.setText(ep.toString());
}
และขอเพิ่มเติมในส่วน การเข้ารหัสที่ใช้งาน
สามารถเข้าไปอ่าน เพิ่มเติมได้ที่ http://www.helloandroid.com/tutorials/rsa-string-encryption-security
Date :
2013-07-24 22:49:25
By :
@tou
Good
Date :
2013-07-25 06:00:12
By :
mr.win
Load balance : Server 04