使用带填充的DES使用提供的密钥进行加密

时间:2012-05-17 10:33:18

标签: java encryption padding des

我想使用给定密钥使用DES加密帧。

我使用的填充样式是PKCS5Padding。如果要添加2个字节,则使用02 02填充字符串,如果要添加3个字节,则使用03 03 03填充8的倍数。 但我的要求是用我的特定字节填充一个字符串。例如,如果要添加2个字节,则添加30个30和3个字节,然后添加30 30 30(十六进制0的值为30)。另外,我必须知道添加了多少填充字节。 我应该遵循哪种填充技术以及如何使用它?

以下是我的加密代码:

byte[] keyValue = new byte[]{(byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x16,(byte) 0x05, (byte) 0x12};
myKeySpec = new DESKeySpec(keyValue);
mySecretKeyFactory = SecretKeyFactory.getInstance("DES");
key = mySecretKeyFactory.generateSecret(myKeySpec);


Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
IvParameterSpec iv2 = new IvParameterSpec(new byte[8]);
cipher.init(Cipher.ENCRYPT_MODE, key, iv2);
byte[] plainText = function.HexStringToByteArray(payloadRecv);
byte[] encryptedText = cipher.doFinal(plainText);

1 个答案:

答案 0 :(得分:3)

请勿在密码规范中选择PKCS5Padding。选择NoPadding。在加密数据之前,您必须自己将填充添加到数据中。在解密之后(也使用无填充),您必须检查最后一个字节,以了解要删除多少字节的填充并自行删除。

基本上,只需编码您所描述的内容。