Android AWS SDK中没有KMS加密方法。在服务器端,我们使用KMSEncryptionMaterialsProvider
创建AmazonS3EncryptionClient
对象,但此类在Android SDK中不可用。我尝试在我的Android项目中使用Java SDK,但它抛出异常
代码:
KMSEncryptionMaterialsProvider materialProvider = new KMSEncryptionMaterialsProvider(kms_cmk_id);
encryptionClient = new AmazonS3EncryptionClient(new ProfileCredentialsProvider(), materialProvider,
new CryptoConfiguration())
.withRegion(Region.getRegion(Regions.US_WEST_2));
异常
引起:java.lang.ClassNotFoundException:没找到类 " javax.management.MBeanServerFactory"在路径上:DexPathList
答案 0 :(得分:1)
是的,有可能。我会给你三种选择,但所有这些都需要让你的手更脏一点。
选项1:您可以派生自己的KMS加密材料提供程序实现。尽管AWS Android SDK中不存在该特定类(可能还有一些依赖项),但您可以在SDK上获得所需的界面:EncryptionMaterialsProvider。应该可以基于此实现您自己的提供程序。
选项2:使用Android SDK中提供的KMS客户端从KMS检索您自己的加密材料,然后将StaticEncryptionMaterialsProvider传递给S3客户端。
选项3:自己处理加密/解密。您可以在技术上使用KMS客户端检索加密材料,然后按照official documentation上的KMS指南加密/解密您的数据。如果您对加密技术感到满意,请这样做。