将文本加密为 AES/CBC/PKCS7Padding
Encrypt text to AES/CBC/PKCS7Padding
我正在开发一个 Web 应用程序来使用 java 6 加密一些文本。
我必须做的加密是 CBC 模式的 AES (Rijndael),具有 PKCS7 填充和 128 位密钥。
我看到一篇文章解释了如何用我必须做的相同方式加密,但使用 PKCS5 填充。
文章的link在这里:
我改
private final static String cI = "AES/CBC/PKCS5Padding";
到
private final static String cI = "AES/CBC/PKCS7Padding";
但是 Java 无法为此找到提供商。
谁能告诉我该怎么做?
Java 规范列出了许多需要支持的加密模式(和填充)。 PKCS7Padding
不包括在内。
这些是任何 Java 实现必须支持的 AES/CBC 模式。
- AES/CBC/NoPadding(128 位密钥)
- AES/CBC/PKCS5Padding(128 位密钥)
(有关详细信息,请参阅 this answer)
Bouncy Castle 确实有您需要的东西。
Java 只提供 PKCS#5 填充,但与 PKCS#7 填充相同。在 Crypto.SE 上查看此问题:
What is the difference between PKCS#5 padding and PKCS#7 padding
对于 AES 和 DES 等常见分组密码,它们可以互换。
试试这个方法
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;
}
我正在开发一个 Web 应用程序来使用 java 6 加密一些文本。
我必须做的加密是 CBC 模式的 AES (Rijndael),具有 PKCS7 填充和 128 位密钥。
我看到一篇文章解释了如何用我必须做的相同方式加密,但使用 PKCS5 填充。
文章的link在这里:
我改
private final static String cI = "AES/CBC/PKCS5Padding";
到
private final static String cI = "AES/CBC/PKCS7Padding";
但是 Java 无法为此找到提供商。
谁能告诉我该怎么做?
Java 规范列出了许多需要支持的加密模式(和填充)。 PKCS7Padding
不包括在内。
这些是任何 Java 实现必须支持的 AES/CBC 模式。
- AES/CBC/NoPadding(128 位密钥)
- AES/CBC/PKCS5Padding(128 位密钥)
(有关详细信息,请参阅 this answer)
Bouncy Castle 确实有您需要的东西。
Java 只提供 PKCS#5 填充,但与 PKCS#7 填充相同。在 Crypto.SE 上查看此问题:
What is the difference between PKCS#5 padding and PKCS#7 padding
对于 AES 和 DES 等常见分组密码,它们可以互换。
试试这个方法
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;
}