import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.io.File;
import org.apache.commons.codec.digest.HmacUtils;
import org.apache.log4j.Logger;
import org.apache.tomcat.util.codec.binary.Base64;
public static void main(String[] args) throws Exception {
File file = new File("C:\\Users\\Desktop\\spellAPi\\apk\\1.apk");
byte[] hmacSha256 = HmacUtils.hmacSha256("nTAD0KjUCkkB85XD+IGpCQ==".getBytes("utf-8"), new FileInputStream(file));
System.out.println(byteArrayToHexString(hmacSha256));
}
/**
* 生成密钥
*/
private static String initkeys() throws Exception {
KeyGenerator kg = KeyGenerator.getInstance("AES"); // 实例化密钥生成器
kg.init(128); // 初始化密钥生成器:AES要求密钥长度为128,192,256位
SecretKey secretKey = kg.generateKey(); // 生成密钥
return Base64.encodeBase64String(secretKey.getEncoded()); // 获取二进制密钥编码形式
}
此方法生成MAC值,用于校验文件完整性。
maven引用
<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.10</version>
</dependency>