为啥用JCE加密明文之后输出的密文变成乱码?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥用JCE加密明文之后输出的密文变成乱码?相关的知识,希望对你有一定的参考价值。

public byte[] dncryptData(byte[] s,byte[] key) throws Exception

// DES算法要求有一个可信任的随机数源
SecureRandom sr = new SecureRandom();
//从原始密钥数据创建DESKeySpec对象
try

DESKeySpec dks = new DESKeySpec(key);

//创建一个密钥工厂,然后用它把DESKeySpec转换成Secret Key对象

SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(algorithm);

SecretKey keySpec = keyFactory.generateSecret(dks);

//Cipher对象实际完成加密操作

Cipher cipher = Cipher.getInstance(algorithm);

//用密钥初始化Cipher对象

cipher.init(Cipher.DECRYPT_MODE, keySpec, sr);

//执行加密操作

byte[] cryptotext= cipher.doFinal(s);
return cryptotext;

catch (InvalidKeyException e)


throw new Exception("密钥非法");

catch (NoSuchAlgorithmException e)

throw new Exception("没有这种加密算法");

catch (BadPaddingException e)

throw new Exception("加密失败");



上面是加密方法,各位大侠帮忙分析下,谢谢。
byte[] cryptotext=sample.encryptData(sample.readFile("c:\\andy.txt"), sample.generateKey());
String sl=new String(cryptotext);
System.out.println(sl);
上面调用之后输出的是乱码,不知道我这样做是不是正确的。
C纥谂座�烹�L?#s刊裢�峦?载??
这就是上面输出的乱码,你觉得这个能被解密成明文吗。。。

参考技术A 密文乱码很正常吧,关键看能不能解密回明文

为什么不能解密,des得到的密文基本都是无意义的二进制文件,用txt打开显然不可能正常显示什么有意义的内容

以上是关于为啥用JCE加密明文之后输出的密文变成乱码?的主要内容,如果未能解决你的问题,请参考以下文章

数据的加密和解密初识

对称加密算法简介

知道明文和密文,如何确定是啥加密算法

第三章 传统加密技术

AES加密算法原理

RSA已知明文和公钥能得到私钥加密的密文吗