为啥用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刊裢�峦?载??
这就是上面输出的乱码,你觉得这个能被解密成明文吗。。。
为什么不能解密,des得到的密文基本都是无意义的二进制文件,用txt打开显然不可能正常显示什么有意义的内容
以上是关于为啥用JCE加密明文之后输出的密文变成乱码?的主要内容,如果未能解决你的问题,请参考以下文章