gpt4 book ai didi

java - 如何使用私钥对字符串进行签名

转载 作者:太空狗 更新时间:2023-10-29 22:37:01 27 4
gpt4 key购买 nike

如果我已经拥有作为 byte[]String 的私钥,如何使用 SHA1withRSA 获取字符串的签名?

最佳答案

我猜你说的是你事先知道 key 对并想用它签名/验证。

请看下面的代码。

import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.Signature;

import sun.misc.BASE64Encoder;

public class MainClass {
public static void main(String[] args) throws Exception {

KeyPair keyPair = getKeyPair();

byte[] data = "test".getBytes("UTF8");

Signature sig = Signature.getInstance("SHA1WithRSA");
sig.initSign(keyPair.getPrivate());
sig.update(data);
byte[] signatureBytes = sig.sign();
System.out.println("Signature:" + new BASE64Encoder().encode(signatureBytes));

sig.initVerify(keyPair.getPublic());
sig.update(data);

System.out.println(sig.verify(signatureBytes));
}

private static KeyPair getKeyPair() throws NoSuchAlgorithmException {
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(1024);
return kpg.genKeyPair();
}
}

在这里您需要更改方法 getKeyPair() 以提供您已知的 key 对。您可以从 Java keystore [JKS] 加载它。

您不能只使用任意字节数组作为您的公钥或私钥。它们应该是相关的。

关于java - 如何使用私钥对字符串进行签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7224626/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com