微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

更改 Android 加密算法以更新 Google Play 上的应用程序的问题 - 从 AES/ECB/PKCS5Padding 到 AES/GCM/NoPadding

如何解决更改 Android 加密算法以更新 Google Play 上的应用程序的问题 - 从 AES/ECB/PKCS5Padding 到 AES/GCM/NoPadding


我想在很长一段时间内更新应用程序。
但是,Google Play 出于以下原因拒绝了该应用。
(不安全加密模式使用的补救措施 - support.google.com/faqs/answer/10046138)

被拒绝的代码如下。

public SecretKeySpec generateKey(int keySize) {
   Date date = new Date();
   Random rand = new Random(date.getTime());
   byte[] aesKeyData = new byte[keySize];
   rand.nextBytes(aesKeyData);
   SecretKeySpec aesKeySpec = new SecretKeySpec(aesKeyData,"AES" );
   return aesKeySpec;
}

public byte[] encrypt(byte[] data,SecretKey key)
   throws NoSuchAlgorithmException,NoSuchPaddingException,InvalidKeyException,IllegalBlockSizeException,BadPaddingException {
   Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); //here
   cipher.init(Cipher.ENCRYPT_MODE,key);
   byte[] outputBytes = cipher.doFinal(data);
   return outputBytes;
}

public byte[] decrypt(byte[] data,BadPaddingException {
   Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); //here
   cipher.init(Cipher.DECRYPT_MODE,key);
   byte[] outputBytes = cipher.doFinal(data);
   return outputBytes;
}

这是问题部分。 (我猜...)

Cipher.getInstance("AES/ECB/PKCS5Padding")

如果我把这部分改成以下,我希望问题能得到解决

Cipher.getInstance("AES/GCM/nopadding")

不过,
现有应用用户已使用“AES/ECB/PKCS5Padding”加密数据。
因此,在新发布的应用程序中使用“AES/ECB/PKCS5Padding”解密后,
用户数据需要用新算法加密。

在这种情况下,我的新应用应包含在 Google Play 中被拒绝的现有算法。
然后,我想,Google Play 也会拒绝。

我应该怎么做才能解决这个问题?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。