Encrypt text to AES/CBC/PKCS7Padding

匿名 (未验证) 提交于 2019-12-03 02:28:01

问题:

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-bit key.

I saw an article that explains how to encrypt in the same way I have to do, but with PKCS5 padding.

The link of the article is here:

https://bit502.wordpress.com/2014/06/27/codigo-java-encriptar-y-desencriptar-texto-usando-el-algoritmo-aes-con-cifrado-por-bloques-cbc-de-128-bits/

I change

private final static String cI = "AES/CBC/PKCS5Padding"; 

To

private final static String cI = "AES/CBC/PKCS7Padding"; 

But Java couldn't find a provider for this.

Could someone tell me how I have to do?

回答1:

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.



回答2:

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.



回答3:

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;     } 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!