秘密鍵で文字列に署名する方法 質問する

秘密鍵で文字列に署名する方法 質問する

SHA1withRSAまたはとしてすでに秘密鍵を持っている場合、を使用して文字列の署名を取得するにはどうすればよいですbyte[]String?

ベストアンサー1

おそらく、事前にキーペアを知っていて、それを使って署名/検証したいということだと思います。

以下のコードを参照してください。

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() を変更して、既知のキー ペアを提供する必要があります。Java キー ストア [JKS] から読み込むことができます。

公開鍵または秘密鍵として、任意のバイト配列を使用することはできません。それらは関連して生成される必要があります。

おすすめ記事