*.rsa和*.sf manifest.mf从java类调用

*.rsa和*.sf manifest.mf从java类调用,java,security,rsa,Java,Security,Rsa,我放弃了一个jar文件并运行了它。但是,它在打开后会立即自行关闭。是否可以从java代码中调用*.rsa或*.sf或manifest.mf的信息来检查它是否已更改,谢谢。实际上我在jar文件类及其返回的证书中找到了一个方法,这意味着在jar文件中有一个证书控制桥,代码是: private Certificate[] XQ(et etProp) throws Exception{ System.out.println("Rg test 78"); String va

我放弃了一个jar文件并运行了它。但是,它在打开后会立即自行关闭。是否可以从java代码中调用*.rsa或*.sf或manifest.mf的信息来检查它是否已更改,谢谢。

实际上我在jar文件类及其返回的证书中找到了一个方法,这意味着在jar文件中有一个证书控制桥,代码是:

    private Certificate[] XQ(et etProp) throws Exception{
        System.out.println("Rg test 78");
    String value = null;
    Iterator iterator = etProp.af().iterator();

    while (iterator.hasNext()) {

        un.JI innerUn = (un.JI) iterator.next();
        String certificateToUpperCase = innerUn.XQ().toUpperCase();


        if (certificateToUpperCase != null && certificateToUpperCase.startsWith("META-INF/")
                && (certificateToUpperCase.endsWith(".RSA") || certificateToUpperCase.endsWith(".DSA"))) {

            value = innerUn.XQ();
            break;
        }

    }

    if (value == null) {
                System.out.println("Rg test 81");
        qm.XQ((String) "Could not find certificates file");
        return null;
    } else {
                System.out.println("Rg test 82");
        byte[] arrayAf = etProp.af(value);
        if (arrayAf == null) {
                        System.out.println("Rg test 83");
            Object[] objectsArray = new Object[] { value };
            return null;
        } else {
                        System.out.println("Rg test 84");
            ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(arrayAf);

            Collection collection;
            try {
                                System.out.println("Rg test 85");
                CertificateFactory certificateFactory = CertificateFactory
                        .getInstance("X.509");
                collection = certificateFactory.generateCertificates(byteArrayInputStream);
            } catch (CertificateException ex) {
                qm.XQ((String) String.format(
                        "Could not parse certificate data: %s",
                        new Object[] { ex.toString() }));
                return null;
            }

            Certificate[] certificates = new Certificate[collection.size()];
            int i = 0;

            Certificate certificate;
            for (Iterator iterator1 = collection.iterator(); iterator1.hasNext(); certificates[i++] = certificate) {
                                System.out.println("Rg test 87");
                certificate = (Certificate) iterator1.next();
            }

            return certificates;
        }
    }
}

保护jar文件不被破解是一个非常好的举措。

当我把*.rsa、*.sf和manifest.mf放在原版上时,它工作得很好。打开一个DOS框并运行它,这样你就可以读取错误消息。辞职之前有什么改变?实际上我已经改变了一些东西,但它没有工作。然后我想辞职可能有问题,我刚刚导出了一个zip原始文件,删除了META-INF/(.rsa,*.sf)文件,并重新辞职。但是现在我注意到jar文件有META-INF/(.dsa,*.sf)文件。如果是如何在ubuntu操作系统中像原版一样签名,那么dsa而不是rsa会有很大区别吗?谢谢。我已经用rsa签署了jar文件,给出了警告:警告:“签名者证书尚未生效。没有提供-tsa或-tsacert,并且这个jar没有时间戳。如果没有时间戳,用户可能无法在签名者证书到期日(2015-06-04)后或任何未来撤销日期后验证此jar。“但是,它不再工作。”。。