这个工具用于验证Keystore的有效性,包括过期时间。Keystore用于对apk签名,可以使用JDK的 Keytool.exe 来生成,如果想要用直观点GUI的方式来生成,可以借助比如Eclipse等工具。
下面是ApkIDE中提供的 KeystoreVerify.jar
工具中使用的核心代码(Java代码,桌面app使用),也就是Keystore的验证方法:
//引入相关类库
import java.security.KeyStore;
import java.security.cert.X509Certificate;
//验证方法
private String getKeystoreInfo(String keystoreFile, char[] keystorePassword, char[] keyPassword){
String myerr="";
try {
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
keystore.load(new FileInputStream(keystoreFile), keystorePassword);
Enumeration<String> aliases = keystore.aliases();
while(aliases.hasMoreElements()){
String alias = aliases.nextElement();
if(keystore.getCertificate(alias).getType().equals("X.509")){
try{
keystore.getKey(alias, keyPassword);
}catch(Exception e){
if(this.isDoverify) myerr="验证失败!";
myerr+="Key Password错误:"+e.getMessage();
break;
}
String inf="";
if(this.isDoverify){
if(this.keyAlias.equalsIgnoreCase(alias)) inf="验证成功!";
else inf="验证失败!别名错误。";
}
else inf="别名:"+ alias;
return inf + " 过期时间:" + dateToString(((X509Certificate) keystore.getCertificate(alias)).getNotAfter());
}
}
} catch (Exception e) {
if(this.isDoverify) myerr="验证失败!";
myerr += "Keystore Password错误:"+e.getMessage();
}
return myerr;
}
private String dateToString(Date date){
SimpleDateFormat fmt=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
return fmt.format(date);
}
by Mandarava(鳗驼螺) 2017.06.19
网友评论