首页 >Java >java教程 >Java中如何保证3DES加解密成功?

Java中如何保证3DES加解密成功?

Susan Sarandon
Susan Sarandon原创
2024-11-16 05:50:02386浏览

How to Ensure Successful Encryption and Decryption with 3DES in Java?

如何在 Java 中使用 3DES 加密和解密文本

在 Java 中使用 Triple DES (3DES) 算法加密和解密文本时,验证过程的准确性至关重要。如果您遇到解密文本与原始字符串不匹配的问题,则可能是由于代码中的小错误造成的。这是一个简洁的解决方案,可确保加密和解密按预期工作:

下面的代码使用 Message Digest 5 (MD5) 进行密钥生成,并使用特定算法参数初始化 Cipher 对象:

public static void main(String[] args) throws Exception {
    String text = "kyle boon";

    byte[] codedtext = new TripleDESTest().encrypt(text);
    String decodedtext = new TripleDESTest().decrypt(codedtext);

    System.out.println(decodedtext); // Prints "kyle boon"
}
public byte[] encrypt(String message) throws Exception {
    // Generate key bytes using MD5 digest
    MessageDigest md = MessageDigest.getInstance("md5");
    byte[] digestOfPassword = md.digest("HG58YZ3CR9".getBytes("utf-8"));
    byte[] keyBytes = Arrays.copyOf(digestOfPassword, 24);
    for (int j = 0, k = 16; j < 8;) {
        keyBytes[k++] = keyBytes[j++];
    }

    // Create SecretKey and IvParameterSpec
    SecretKey key = new SecretKeySpec(keyBytes, "DESede");
    IvParameterSpec iv = new IvParameterSpec(new byte[8]);

    // Initialize Cipher object
    Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");
    cipher.init(Cipher.ENCRYPT_MODE, key, iv);

    // Encrypt plain text
    byte[] plainTextBytes = message.getBytes("utf-8");
    return cipher.doFinal(plainTextBytes);
}
public String decrypt(byte[] message) throws Exception {
    // Generate key bytes using MD5 digest
    MessageDigest md = MessageDigest.getInstance("md5");
    byte[] digestOfPassword = md.digest("HG58YZ3CR9".getBytes("utf-8"));
    byte[] keyBytes = Arrays.copyOf(digestOfPassword, 24);
    for (int j = 0, k = 16; j < 8;) {
        keyBytes[k++] = keyBytes[j++];
    }

    // Create SecretKey and IvParameterSpec
    SecretKey key = new SecretKeySpec(keyBytes, "DESede");
    IvParameterSpec iv = new IvParameterSpec(new byte[8]);

    // Initialize Cipher object
    Cipher decipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");
    decipher.init(Cipher.DECRYPT_MODE, key, iv);

    // Decrypt cipher text
    return new String(decipher.doFinal(message), "UTF-8");
}

确保用于加密的密钥与用于解密的密钥相匹配。通过将输入字符串与原始字符串进行比较,验证输入字符串是否已准确加密和解​​密。如果您遵循这些准则,您应该能够在 Java 中使用 3DES 成功加密和解密文本。

以上是Java中如何保证3DES加解密成功?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn