CMS шифрование на Android 9 и выше - PullRequest
0 голосов
/ 06 октября 2018

Google объявил в этом году, что он отказывается от некоторых функций от поставщика BC.Я использую CMS для шифрования текста, используя сертификат типа X509Certificate.Однако в Android Pie я встретил NoSuchAlgorithmException, как упоминалось в сообщении Google ранее.

Для приложений, ориентированных на Android P или более позднюю версию, вызов вызовет исключение NoSuchAlgorithmException.

Для разрешениядля этого вам следует прекратить указывать поставщика и использовать реализацию по умолчанию.

Я также проверил возможности Conscrypt здесь , но не смог найти способ выполнить CMS для полученного текста.,Есть ли другая альтернатива, которая может помочь достичь того же уровня / типа шифрования?

Вот мой код:

public byte[] encryptText(String txt) {

CMSEnvelopedDataStreamGenerator cmsdataGen = new CMSEnvelopedDataStreamGenerator();
cmsdataGen.addRecipientInfoGenerator(new JceKeyTransRecipientInfoGenerator(deviceCert).setProvider("BC"));
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
OutputStream out = cmsdataGen.open(byteArrayOutputStream, new JceCMSContentEncryptorBuilder(CMSAlgorithm.AES128_CBC).setProvider("BC").build());
byte[] unencryptedContent = txt.getBytes();
out.write(unencryptedContent);
String encrypted = byteArrayOutputStream.toString();
Log.v("Security","ENCRYPTED_STR BEFORE ENCODING= " + encrypted);
out.close();
return byteArrayOutputStream.toByteArray();

}
...