简体   繁体   English

使用JDK1.6以编程方式签名Jar文件但使用JDK1.7时出错

[英]Error in signing Jar file programmatically with JDK1.6 but working with JDK1.7

We are developing a Java Utility to sign the Jar file programmatically but are facing issues is Signing Jar for JDK 1.6 where as it is working properly for JDK1.7 我们正在开发Java实用程序以编程方式对Jar文件进行签名,但是面临的问题是Signing Jar for JDK 1.6,因为它对于JDK1.7正常工作

Below given is the code snippet used for signing the APK file : 以下是用于签署APK文件的代码段:

private void signAPK(){

    APK_SIGNER_COMMAND = "jarsigner -verbose -keystore keystore_file.keystore -digestalg SHA1 apk_file.apk Alias_Value -storepass Password_value";

    try {
        System.out.println(APK_SIGNER_COMMAND);
        Process p = Runtime.getRuntime().exec(APK_SIGNER_COMMAND);

        BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream()));            
        String line=reader.readLine();              
        while(line!=null){ 
            System.out.println(line);
            line=reader.readLine();
        }       

        reader.close();
        p.destroy();
    } catch (IOException e) {           
        e.printStackTrace();
    }
}

For JDK1.7 jar / apk file is getting signed properly, but for JDK 1.6 application is blocked at line where reader readsline (String line=reader.readLine();). 对于JDK1.7,jar / apk文件已正确签名,但对于JDK 1.6,应用程序在读取器readsline(String line = reader.readLine();)的行处被阻止。 Can someone help why this might not be working for JDK1.6 version. 有人可以帮忙为什么这可能不适用于JDK1.6版本。

Thanks. 谢谢。 Help Appreciated. 帮助表示赞赏。

It is happening because you are using the SHA1, For JDK1.6 use SHA256. 这是因为您使用的是SHA1,对于JDK1.6,则使用SHA256。 you might be able to sign it. 您可能可以签名。

Changing the digest algorithm might help. 更改摘要算法可能会有所帮助。

Jarsigner uses different digest algorithms for JDK1.7 and JDK1.6 Jarsigner对JDK1.7和JDK1.6使用不同的摘要算法

JDK1.6 jarsigner docs JDK1.6 jarsigner文档

JDK1.7 jarsigner docs JDK1.7 jarsigner文档

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM