2017-02-13 120 views
0

Android AWS SDK中没有用于KMS加密的方法。在服务器端,我们使用KMSEncryptionMaterialsProvider来创建AmazonS3EncryptionClient对象,但该类在Android SDK中不可用。我想在我的Android项目使用Java SDK,但它抛出一个异常我可以在Android中使用AWS KMS加密进行客户端加密吗?

代码:

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”on path:DexPathList

+0

Android是Java的一个子集。 Java SDK可能不会工作 – donkon

+0

你的用例是什么? –

+0

@ketanvijayvargiya请参阅最新的问题 –

回答

1

是的,这是可能的。我会给你三个选项,但所有这些都需要让你的手变得更脏。

选项1:您可以派生自己的KMS加密材料提供者实现。尽管AWS Android SDK中不存在该特定类(可能包括其某些依赖项),但您需要在SDK上使用该接口:EncryptionMaterialsProvider。应该可以基于此来实现您自己的提供商。

选项2:使用Android SDK中提供的KMS客户端从KMS中检索自己的加密资料,然后将StaticEncryptionMaterialsProvider传递给S3客户端。

选项3:自己处理加密/解密。从技术上讲,您可以使用KMS客户端检索加密材料,然后按照official documentation上的KMS指南对数据进行加密/解密。如果你对密码学感到满意,请做这个。

相关问题