更改 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 (将#修改为@)