Tôi có tệp khóa riêng pem, tôi đang sử dụng tệp đó để ký và mã hóa dữ liệu. ký hoạt động tốt và tôi cũng có thể xác minh trên nền tảng khác, nhưng trong khi mã hóa dữ liệu, tôi nhận được sau khi lỗi:Nhận lỗi java.lang.ArrayIndexOutOfBoundsException: quá nhiều dữ liệu cho khối RSA
04-04 09:55:51.821: E/AndroidRuntime(2725): FATAL EXCEPTION: Thread-102
04-04 09:55:51.821: E/AndroidRuntime(2725): java.lang.ArrayIndexOutOfBoundsException: too much data for RSA block
04-04 09:55:51.821: E/AndroidRuntime(2725): at com.android.org.bouncycastle.jce.provider.JCERSACipher.engineDoFinal(JCERSACipher.java:457)
04-04 09:55:51.821: E/AndroidRuntime(2725): at javax.crypto.Cipher.doFinal(Cipher.java:1106)
04-04 09:55:51.821: E/AndroidRuntime(2725): at com.example.testsigning.MainActivity.rsaEncrypt(MainActivity.java:185)
04-04 09:55:51.821: E/AndroidRuntime(2725): at com.example.testsigning.MainActivity$1.run(MainActivity.java:51)
04-04 09:55:51.821: E/AndroidRuntime(2725): at java.lang.Thread.run(Thread.java:856)
Sau đây là đoạn mã để trích xuất các phím từ tập tin cá nhân:
// Read the file into string
String privKeyPEM = readFile("/mnt/sdcard/rsa_key");
privKeyPEM = privKeyPEM.replace("-----BEGIN RSA PRIVATE KEY-----", "");
privKeyPEM = privKeyPEM.replace("-----END RSA PRIVATE KEY-----", "");
// Base64 decode the data
byte[] encoded = Base64.decode(privKeyPEM, Base64.DEFAULT);
// PKCS8 decode the encoded RSA private key
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(encoded);
KeyFactory kf = KeyFactory.getInstance("RSA");
mPrivKey = kf.generatePrivate(keySpec);
RSAPrivateCrtKey privk = (RSAPrivateCrtKey) mPrivKey;
RSAPublicKeySpec pubKeySpec = new java.security.spec.RSAPublicKeySpec(
privk.getPublicExponent(), privk.getModulus());
mPubKey = kf.generatePublic(pubKeySpec);
Và sau đây là đoạn mã để mã hóa dữ liệu:
Cipher cipher = Cipher.getInstance("RSA/None/OAEPWithSHA1AndMGF1Padding", "BC");
cipher.init(Cipher.ENCRYPT_MODE, mPubKey);
return cipher.doFinal("Hello World".getBytes()); // here is the problem
Bất kỳ sự giúp đỡ để giải quyết vấn đề này sẽ được đánh giá cao.
Kính trọng, Yuvi
điều đó có nghĩa là mảng của bạn có ít hơn 1 bản ghi. gỡ lỗi, bạn sẽ nhận được ý tưởng đó là vấn đề ở đâu –
xem bài đăng này http://stackoverflow.com/questions/2579103/too-much-data-for-rsa-block-fail-what-is-pkcs7 –
@ chintankhetiya có thể xây dựng một số chi tiết, mà mảng bạn đang nói về. – Yuvi