java AES加密图片,加密后的图片比原来的图片大了?那里出错了,求大神解答!

/*AES加密方法*/publicstaticbyte[]encrypt(byte[]content,Stringpassword,intlength){try{KeyG... /*AES 加密方法*/
public static byte[] encrypt(byte[] content,String password,int length){
try {
KeyGenerator kgen=KeyGenerator.getInstance("AES");
kgen.init(length, new SecureRandom(password.getBytes()));
SecretKey Seky=kgen.generateKey();
byte[] codeFormat=Seky.getEncoded();
SecretKeySpec secretKet=new SecretKeySpec(codeFormat, "AES");
Cipher Cp=Cipher.getInstance("AES");
byte[] byteContent=content;
Cp.init(Cipher.ENCRYPT_MODE, secretKet);
byte[] result=Cp.doFinal(byteContent);
return result;
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} /*catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} */catch (InvalidKeyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (BadPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
/* 对jpg图片的加密方法 */
public void FileEn(String fileReadPath,String fileWritePath,String password,int length){
File fileRead=new File(fileReadPath);
File fileWrite=new File(fileWritePath);
if(!fileRead.exists())
{
System.out.println("文件不存在");
System.exit(0);
}
if(!fileWrite.exists()){
System.out.println("创建文件");
try {
fileWrite.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
try {
FileInputStream fins=new FileInputStream(fileRead);
FileOutputStream fous=new FileOutputStream(fileWrite);
byte[] data=new byte[fins.available()]; //读取图片的整个长度
int HeadLength=623; //jpg头部信息的长度
byte[] head=new byte[HeadLength];
byte[] temp=new byte[16];//由于AES是十六的倍数才能加密,不够的话会自动填充字段,即PKCS5Padding处理
byte[] end;
int len;
int readLen;
len=fins.read(data);
fins.close();
for(int i=0;i<HeadLength;i++)
head[i]=data[i];//读取头部信息
fous.write(head);
readLen=HeadLength;//表示当前读取的位置
while((readLen+16)<len){
for(int j=0;j<16;j++)//每16个字节读取
temp[j]=data[readLen+j];
fous.write(encrypt(temp, password, length));//进行加密并且写入
readLen+=16;//当前读取位置+16
}
end=new byte[len-readLen];
for(int k=0;k<end.length;k++)
end[k]=data[readLen+k];
fous.write(end);
//对于最后小于16的字段不加直接写入,是为了避免PKCS5Padding
fous.close();
}chatch(..){
....} //异常处理省略
}
展开
 我来答
657kkk
2013-03-08 · TA获得超过9111个赞
知道大有可为答主
回答量:2.2万
采纳率:0%
帮助的人:7834万
展开全部
这个我不清楚。

给图片加密,我使用的是超级加密3000.

超级加密3000采用国际上成熟的加密算法和安全快速的加密方法,可以有效保障数据安全!
追问
我这个是编程作业来的......./哭
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冰火两重天
2013-03-08 · TA获得超过1425个赞
知道小有建树答主
回答量:1489
采纳率:0%
帮助的人:985万
展开全部
加密后的长度大于本来的长度。
比如你对字符串abc加密,加密后的长度大于3
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式