Android:摆脱“您的应用包含不安全的加密加密模式”的Play商店警告

时间:2019-11-22 22:58:41

标签: android encryption google-play

我最近开始收到这样的Play商店警告:“您的应用包含不安全的密码加密模式”,为了摆脱它(不知道确切含义),我创建了一个“复杂”我的应用程序中有关加密的结构如下:

1)下一个方法(位于一种与密码学不同的类中,以防万一)将密码首选项存储在两个位置,即SharedPreferences中的“ real”值和应用程序类设置器中称为AppSettings(“的” default“值)。默认值”表示在找不到SharedPreference时必须获得的默认值。

public static void setCryptPreferences()
{
  Context context = AppSettings.getContext();
  AppSettings appSettings = AppSettings.getInstance();

  String[] defCryptoValues = new String[]{ "AES", "AES/CBC/PKCS5Padding", "UTF-8"};
  appSettings.setDefCryptValues(defCryptoValues);

  AWUtils.setSharedPreference(context, "CRYPT_ALGORITHM", "AES");
  AWUtils.setSharedPreference(context, "PADDING", "AES/CBC/PKCS5Padding");
  AWUtils.setSharedPreference(context, "CHAR_ENCODING", "UTF-8");
}

然后在应用启动时使用此功能对其进行设置。

2)然后,每当需要加密时,便将其与下一个方法一起使用:

public static String cipherText(String plainText)
{
    AppSettings appSettings = AppSettings.getInstance();

    Cryptography crypto = new Cryptography();
    String[] defCryptoValues = appSettings.getDefCryptValues();
    String[] cryptoParams = Cryptography.getCryptoParams(defCryptoValues);

    return crypto.encrypt(plainText, cryptoParams);
}

最后这是真正的crypt方法:

private String encrypt(String text, String[] cryptedParams)
{
    checkKeys();

    if (text == null) return null;
    String retVal = null;

    try {
        final SecretKeySpec key = new SecretKeySpec(mCryptKey.getBytes(cryptedParams[2]), cryptedParams[0]);
        final IvParameterSpec iv = new IvParameterSpec(mCryptIV.getBytes(cryptedParams[2]));

        final Cipher cipher = Cipher.getInstance(cryptedParams[1]);
        cipher.init(Cipher.ENCRYPT_MODE, key, iv);

        final byte[] encrypted = cipher.doFinal(text.getBytes(cryptedParams[2]));
        retVal = new String(encodeHex(encrypted));
    } catch (Exception e) {
        e.printStackTrace();
    }

    return retVal;
}

我对警告不太清楚,我以为我拥有加密参数

"CRYPT_ALGORITHM", "AES"
"PADDING", "AES/CBC/PKCS5Padding"
"CHAR_ENCODING", "UTF-8"

作为密码学类中的纯文本,因此我创建了所有关于“隐藏”它们的想法,并认为它可以帮助我摆脱它们,但事实并非如此。我最近上传了我的应用程序的新版本,但警告仍然存在,并且我不知道该怎么办。

0 个答案:

没有答案