Encrypt text to AES/CBC/PKCS7Padding

前端 未结 3 661
孤独总比滥情好
孤独总比滥情好 2020-12-16 00:52

I am developing a web application to encrypt some texts with java 6.

The encrypted that I have to do is a AES (Rijndael) in CBC mode with PKCS7 padding and a 128-bi

相关标签:
3条回答
  • 2020-12-16 01:14

    Java only provides PKCS#5 padding, but it is the same as PKCS#7 padding. See this question on Crypto.SE:

    What is the difference between PKCS#5 padding and PKCS#7 padding

    They are interchangeable for the common block ciphers like AES and DES.

    0 讨论(0)
  • 2020-12-16 01:17

    The Java specification list a number of encryption modes (and paddings) that needs to be supported. PKCS7Padding is not included.

    These are the AES/CBC modes any Java implementation must support.

    • AES/CBC/NoPadding (128 bit key)
    • AES/CBC/PKCS5Padding (128 bit key)

    (See this answer for more information)

    Bouncy Castle does however have what you need.

    0 讨论(0)
  • 2020-12-16 01:31

    Try this method

    String KEY_AES = "**************";
    public String encrypt(String value) {
            try {
                byte[] key = KEY_AES.getBytes("UTF-8");
                byte[] ivs = KEY_AES.getBytes("UTF-8");
                Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
                SecretKeySpec secretKeySpec = new SecretKeySpec(key, "AES");
                AlgorithmParameterSpec paramSpec = new IvParameterSpec(ivs);
                cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, paramSpec);
                return Base64.encodeToString(cipher.doFinal(value.getBytes("UTF-8")), Base64.DEFAULT);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    
    0 讨论(0)
提交回复
热议问题