gpt4 book ai didi

Java PBEwithMD5andDES解密问题

转载 作者:太空宇宙 更新时间:2023-11-04 06:37:28 25 4
gpt4 key购买 nike

我有一个运行良好的加密方法,并向我传递一个加密的字符串。

    KeySpec keySpec = new PBEKeySpec(encryptionPassword.toCharArray(), salt, iterations);

SecretKey key = SecretKeyFactory.getInstance("PBEWithMD5AndDES").generateSecret(keySpec);
AlgorithmParameterSpec paramSpec = new PBEParameterSpec(salt, iterations);


//encryption
Cipher encoder = Cipher.getInstance(key.getAlgorithm());
encoder.init(Cipher.ENCRYPT_MODE, key, paramSpec);

String str_to_encrypt = "Hello";
byte[] enc = encoder.doFinal(str_to_encrypt.getBytes("UTF8"));

System.out.println("encrypted = " + DatatypeConverter.printBase64Binary(enc));


output: encrypted = vjXsSX0cBNc=

但是我也希望解密我收到的这个字符串,但是我遇到了麻烦,尤其是 getBytes 和 printBase64Binary 的反向操作。

这是我第一次尝试解密,所以我用了很多谷歌搜索,我发现'parseBase64Binary'可以从字符串中获取字节,用'new String(dec, "US-ASCII")然后将字节转换为字符串......有些东西歪了。

//decryption
Cipher encoder = Cipher.getInstance(key.getAlgorithm());
encoder.init(Cipher.DECRYPT_MODE, key, paramSpec);

String str_to_decrypt = "vjXsSX0cBNc=";
byte[] dec = DatatypeConverter.parseBase64Binary(str_to_decrypt);

System.out.println("decrypted = " + new String(dec, "UTF8"));


output: decrypted = ?5?I}?

我唯一能想到的是,我实际上并没有正确解密字符串,因为我没有在任何地方使用encoder.doFinal...有点难于在哪里使用它。

最佳答案

编辑:为了完整性回答自己的问题,全部排序!

再玩一会儿,我说我没有正确解密字符串,因为我没有使用encoder.doFinal...尝试和错误导致我这样做是正确的:

 String str_to_decrypt = "vjXsSX0cBNc=";

byte[] dec = encoder.doFinal(DatatypeConverter.parseBase64Binary(str_to_decrypt));

System.out.println("decrypted = " + new String(dec, "UTF8"));


output: decrypted = Hello

关于Java PBEwithMD5andDES解密问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25181029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com