首页 > 解决方案 > 这使用了什么类型的加密?

问题描述

我是移动编程的新手,尤其是加密,有人知道下面这段代码中使用了什么类型的加密吗?

static String encrypt(String text) throws Exception
    {
        String password = AppData.ENCRYPT_SERVER;
        final byte[] pass = password.getBytes(US_ASCII);
        final byte[] salt = (new SecureRandom()).generateSeed(8);
        final byte[] inBytes = text.getBytes(UTF_8);

        final byte[] passAndSalt = array_concat(pass, salt);
        byte[] hash = new byte[0];
        byte[] keyAndIv = new byte[0];
        for (int i = 0; i < 3 && keyAndIv.length < 48; i++) {
            final byte[] hashData = array_concat(hash, passAndSalt);
            final MessageDigest md = MessageDigest.getInstance("MD5");
            hash = md.digest(hashData);
            keyAndIv = array_concat(keyAndIv, hash);
        }

        final byte[] keyValue = Arrays.copyOfRange(keyAndIv, 0, 32);
        final byte[] iv = Arrays.copyOfRange(keyAndIv, 32, 48);
        final SecretKeySpec key = new SecretKeySpec(keyValue, "AES");

        final Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        cipher.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(iv));
        byte[] data = cipher.doFinal(inBytes);
        data = array_concat(array_concat(SALTED_MAGIC, salt), data);
        return Base64.encodeToString(data, Base64.DEFAULT);
    }

标签: javaandroidencryption

解决方案


您在这一行中有您问题的答案:

final Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

AES

高级加密标准- 这是您的加密。


加拿大广播公司

密码块链接 - 这是密码加密模式。


PKCS5

公钥加密标准 #5 - 这是应用的填充。


推荐阅读