公開鍵が秘密鍵に対応しているかどうかを確認したいのですが、正しいですか。
BCというプロバイダーもありません。私はこの実装を持っていますが、Utils.createFixedRandom() が何をすべきかわかりません。私はそのようなライブラリとメソッドを持っていません。
さらに、java.security を使用しない未加工の実装がある場合、それは素晴らしいことです。
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.SecureRandom;
import java.security.Signature;
public class BasicDSAExample {
public static void main(String[] args) throws Exception {
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA", "BC");
keyGen.initialize(512, new SecureRandom());
KeyPair keyPair = keyGen.generateKeyPair();
Signature signature = Signature.getInstance("DSA", "BC");
signature.initSign(keyPair.getPrivate(), Utils.createFixedRandom() );
byte[] message = new byte[] { (byte) 'a', (byte) 'b', (byte) 'c' };
signature.update(message);
byte[] sigBytes = signature.sign();
signature.initVerify(keyPair.getPublic());
signature.update(message);
if (signature.verify(sigBytes)) {
System.out.println("pow");
} else {
System.out.println("nie");
}
}
}