這個工具用于驗證Keystore的有效性艺智,包括過期時間倘要。Keystore用于對apk簽名,可以使用JDK的 Keytool.exe 來生成十拣,如果想要用直觀點GUI的方式來生成封拧,可以借助比如Eclipse等工具。
下面是ApkIDE中提供的 KeystoreVerify.jar
工具中使用的核心代碼(Java代碼夭问,桌面app使用)泽西,也就是Keystore的驗證方法:
//引入相關(guān)類庫
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