des解密问题:Given final block not properly padded

lsdfjj 2010-06-07 10:51:08
我用字节方式读取文件,进行字节数组加密并写入文件,但是从文件读取字节后解密时就出现“Given final block not properly padded”。我知道是最后一个字节数组没有装满。但是怎么解决呢?网上有说用Byte64来做,但是那样就把字节转换为了字符串。而且我试了一下,也没有成功。我上网搜了很多都没有解决,希望大家帮帮我。谢谢。
主要代码如下:
//加密
public byte[] createEncyptor(byte[] buff){

try{
c.init(Cipher.ENCRYPT_MODE, deskey);
cipherByte = c.doFinal(buff);
}

//解密
public byte[] createDecryptor(byte[] buff){
try{
c.init(Cipher.DECRYPT_MODE, deskey);
cipherByte = c.doFinal(buff);
}

//主程序
public static void main(String [] args){

DES d = new DES();//这是我的主类,这几个函数就在这个类里面
byte tempbytes[] = new byte[1024];//一次读取的字节就放在这里面
int byteread = 0;这是记录读取的字节数量
String fileName;
try {
FileInputStream in=new FileInputStream("D:\\王袁艳\\12.txt");
FileOutputStream out = new FileOutputStream("D:\\王袁艳\\121212.txt");
//读取多个字节到数组中,byteread为一次读取的字节数
/**
* 加密过程
*/
while((byteread=in.read(tempbytes))!=-1){

out.write(d.createEncyptor(tempbytes),0,byteread);
}
System.out.println("文件加密完毕");
/**
* 解密过程
*/
in=new FileInputStream("D:\\王袁艳\\121212.txt");
out = new FileOutputStream("D:\\王袁艳\\1212129999.txt");
while((byteread=in.read(tempbytes))!=-1){

out.write(d.createDecryptor(tempbytes),0,byteread);
}
System.out.println("文件解密完毕");
}
catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}



}

}
这个程序只能加密不能解密,麻烦有谁能帮我解决一下,真的很谢谢你们!
...全文
4215 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
宁静-夏天 2010-06-07
  • 打赏
  • 举报
回复
des 加解密处理的字节数貌似必须是8的倍数,java自身的des在加解密时的确会经常报这个错。

不过好久没碰这个了,楼主可以网上找点东西看看。如果实在不行,我可以把以前的改的一个C的des加解密给你。这个不会出现这个问题,它可以自动补全的。

留个你的邮箱就好了。
lodachi 2010-06-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lsdfjj 的回复:]

这个应该没有什么关系,我在想如果把后面的空格不加密,是不是就可以解决
[/Quote]怎么不试试呢
lsdfjj 2010-06-07
  • 打赏
  • 举报
回复
这个应该没有什么关系,我在想如果把后面的空格不加密,是不是就可以解决
lodachi 2010-06-07
  • 打赏
  • 举报
回复
用System.arraycopy()方法可以解决吗
  • 打赏
  • 举报
回复
问问题至少把你 DES 的主类贴出来吧,你就贴了一些调用的代码。

对不起,无能为力!
lsdfjj 2010-06-07
  • 打赏
  • 举报
回复
好的。不过c里面的库函数可以在java里面用吗?
lsdfjj@163.com 我的邮箱

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧