如何在Java中使用3 DES加密/解密?我編寫的使用3 DES在Java中編碼字符串的每一種方法都不能被解密回原來的字符串。有沒有人有一個(gè)簡(jiǎn)單的代碼片段,只需對(duì)字符串進(jìn)行編碼,然后將字符串解碼回原來的字符串?我知道我在這個(gè)代碼的某個(gè)地方犯了一個(gè)非常愚蠢的錯(cuò)誤。到目前為止,我一直在做這樣的工作:*注意,我不會(huì)從加密方法中返回base 64文本,也不會(huì)在解密方法中返回base 64不編碼,因?yàn)槲以噲D查看我是否在謎題的base 64部分中出錯(cuò)。public class TripleDESTest {
public static void main(String[] args) {
String text = "kyle boon";
byte[] codedtext = new TripleDESTest().encrypt(text);
String decodedtext = new TripleDESTest().decrypt(codedtext);
System.out.println(codedtext);
System.out.println(decodedtext);
}
public byte[] encrypt(String message) {
try {
final MessageDigest md = MessageDigest.getInstance("md5");
final byte[] digestOfPassword = md.digest("HG58YZ3CR9".getBytes("utf-8"));
final byte[] keyBytes = Arrays.copyOf(digestOfPassword, 24);
for (int j = 0, k = 16; j < 8;)
{
keyBytes[k++] = keyBytes[j++];
}
final SecretKey key = new SecretKeySpec(keyBytes, "DESede");
final IvParameterSpec iv = new IvParameterSpec(new byte[8]);
final Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, key, iv);
final byte[] plainTextBytes = message.getBytes("utf-8");
final byte[] cipherText = cipher.doFinal(plainTextBytes);
final String encodedCipherText = new sun.misc.BASE64Encoder().encode(cipherText);
return cipherText;
}
請(qǐng)問如何在Java中使用3 DES加密/解密?
慕田峪4524236
2019-08-02 07:02:14