日期:2014-05-20  浏览次数:20781 次

java安全性编程遇到的问题
import java.io.FileInputStream;

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.PBEParameterSpec;


public class PBEDec {

/**
 * @param args
 */
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
char[] passwd=args[0].toCharArray();
PBEKeySpec pbks=new PBEKeySpec(passwd);
SecretKeyFactory kf=SecretKeyFactory.getInstance("PBEWithMD5AndDES");
SecretKey k=kf.generateSecret(pbks);
byte[] salt=new byte[8];
FileInputStream f=new FileInputStream("PBEEnc.dat");
f.read(salt);
int num=f.available();
byte[] ctext=new byte[num];
f.read(ctext);
Cipher cp=Cipher.getInstance("PBEWithMD5AndDES");
PBEParameterSpec ps=new PBEParameterSpec(salt,1000);
cp.init(Cipher.DECRYPT_MODE,k,ps);
byte ptext[]=cp.doFinal(ctext);
for(int i=0;i<ptext.length;i++)
{
System.out.println(ptext[i]+",");
}
System.out.println("");
for(int i=0;i<ptext.length;i++)
{
System.out.println((char)ptext[i]);
}


}

}
异常如下:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at PBEDec.main(PBEDec.java:17)
exception

------解决方案--------------------
命令行后加参数,否则char[] passwd=args[0].toCharArray();这句的args[0]报错。