hMac
"HmacMD5","HmacSHA1", "HmacSHA256", "HmacSHA384", "HmacSHA512"
public void testHMac(String filePath, String key, String algo) throws Exception{
FileInputStream fis = new FileInputStream(new File(filePath));
try{
SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(), algo);
Mac mac = Mac.getInstance(algo);
mac.init(signingKey);
byte[] data = new byte[1024];
int len = 0;
while((len = fis.read(data))>0){
mac.update(data, 0, len);
}
mac.doFinal();
}finally{
fis.close();
}
}
Hash
"MD5", "SHA1", "SHA-256", "SHA-512", "SHA-224", "SHA-384"
public void testHASH(String filePath, String algo) throws Exception{
FileInputStream fis = new FileInputStream(new File(filePath));
try{
MessageDigest md = MessageDigest.getInstance(algo);
byte[] data = new byte[1024];
int len = 0;
while((len = fis.read(data))>0){
md.update(data, 0, len);
}
md.digest();
}finally{
fis.close();
}
}
Signature
"MD5withRSA", "SHA1withRSA", "SHA256withRSA"
public void testSignature(String filePath, String algo,String ali, KeyStore ks, String pin) throws Exception{
FileInputStream fis = new FileInputStream(new File(filePath));
try{
Signature signature = Signature.getInstance(algo, ks.getProvider());
ks.load(null, pin.toCharArray());
PrivateKey pvkey= (PrivateKey)ks.getKey(ali, pin.toCharArray());
if(pvkey==null)
throw new Exception("该容器没有私钥");
signature.initSign(pvkey);
byte[] data = new byte[1024];
int len = 0;
while((len = fis.read(data))>0){
signature.update(data, 0, len);
}
signature.sign();
}finally{
fis.close();
}
}