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();
}