相关疑难解决方法(0)

使用Java加密和解密:无法获得相同的输出

我正在尝试学习和测试java 1.6加密/解密API.我想知道我做错了什么以及我在知识方面缺少什么.

在下面的代码中,我创建了两个密码:一个用于加密,另一个用于解密.当我使用这些密码时,我使用不同的SecretKey初始化它们,但我仍然能够获得相同的值.为什么是这样?

    String algorithm = "DES";
    SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(algorithm);

    byte[] encBytes = "12345678".getBytes("UTF8");
    byte[] decBytes = "56781234".getBytes("UTF8");

    DESKeySpec keySpecEncrypt = new DESKeySpec(encBytes);
    DESKeySpec keySpecDecrypt = new DESKeySpec(decBytes);


    SecretKey keyEncrypt = keyFactory.generateSecret(keySpecEncrypt);
    SecretKey keyDecrypt = keyFactory.generateSecret(keySpecDecrypt);

    Cipher cipherEncrypt = Cipher.getInstance(algorithm);
    Cipher cipherDecrypt = Cipher.getInstance(algorithm);

    String input = "john doe";

    cipherEncrypt.init(Cipher.ENCRYPT_MODE, keyEncrypt);
    byte[] inputBytes = cipherEncrypt.doFinal(input.getBytes());
    System.out.println("inputBytes: " + new String(inputBytes));

    cipherDecrypt.init(Cipher.DECRYPT_MODE, keyDecrypt);
    byte[] outputBytes = cipherDecrypt.doFinal(inputBytes);
    System.out.println("outputBytes: " + new String(outputBytes));
Run Code Online (Sandbox Code Playgroud)

java encryption

5
推荐指数
2
解决办法
3万
查看次数

标签 统计

encryption ×1

java ×1