java - 使用 jar 文件中的代码时出现问题

标签 java jar sha1 signature dsa

我运行以下代码:

public class Sign {

private static final PrivateKey         priv    = Util.loadPrivate();
private static final PublicKey          pub     = Util.loadPublic();
private static final HexBinaryAdapter   adp     = new HexBinaryAdapter();

public static String sign(String in) {
    try {
        Signature sign = Signature.getInstance(Util.ALG);
        sign.initSign(priv);
        sign.update(in.getBytes());
        return adp.marshal(sign.sign());

    } catch (Exception e) {e.printStackTrace();}
    return null;
}

public static boolean verify(String data, String sign) {
    try {
        Signature verify = Signature.getInstance(Util.ALG);
        verify.initVerify(pub);
        verify.update(data.getBytes());
        return verify.verify(adp.unmarshal(sign));
    } catch (Exception e) {e.printStackTrace();}
    return false;
}

}

主函数如下所示:

    public static void main(String[] args) {
    String in = "lala";
    String sign = Sign.sign(in);
    System.out.println(sign);
    System.out.println(Sign.verify(in, sign));
}

当我从 Eclipse 中运行它时一切都很顺利(输出为“true”),但是当我将它打包到 jar 中(没有 main 函数)并运行它时,输出为 false。

这是我加载 key 的方式:

    public static PrivateKey loadPrivate() {
    try {
        URLConnection con = Util.class.getResource("private.key").openConnection();
        byte[] bs = new byte[con.getContentLength()];
        con.getInputStream().read(bs);
        return KeyFactory.getInstance(ALG).generatePrivate(new PKCS8EncodedKeySpec(bs));
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}

public static PublicKey loadPublic() {
    try {
        URLConnection con = Util.class.getResource("public.key").openConnection();
        byte[] bs = new byte[con.getContentLength()];
        con.getInputStream().read(bs);
        return KeyFactory.getInstance(ALG).generatePublic(new X509EncodedKeySpec(bs));
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}

我检查并加载 key 工作正常。

有什么想法吗?

最佳答案

像这样运行:

java Main -classpath=/path/to/libraryk.jar

关于java - 使用 jar 文件中的代码时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5655876/

相关文章:

java - android中的字符串解析

java - 使用 IKVM 将 .jar 导入 .dll 并使用它

java - 如何在运行时从文件夹或 JAR 加载类?

java - 包 org.jboss.netty.channel.socket.nio 不存在

java - 验证php中的JAVA签名

bash - Git 哈希对象在 Powershell、CMD 和 Bash 中产生不同的 SHA1?

jvm - 带有 jar 的可移植 JVM

java - 删除包含表达式的单词?

c++ - C++ 中的哈希函数 SHA1

java - Android Studio 导致应用程序接收致命信号 6 (SIGABRT),代码 -6 (SI_TKILL)