私はJFileChooser
で読み込んだファイルに署名したいと思います。しかし、私はそれをターミナルに印刷するときには、クオンマークと人間が読めない他の文字だけを読むことができます。 署名する私のコードは次のとおりです。署名を人間が読める形式に変換する(バウンシーキャスル)
public static void sign() throws Exception{
byte[] file = fileChooser();
store = KeyStore.getInstance(storeType);
FileInputStream in = new FileInputStream(new File(storePath));
store.load(in, storePassword);
in.close();
Key priv = store.getKey("test", storePassword);
System.out.println(priv.toString() + "priv string");
X509Certificate cert = (X509Certificate) store.getCertificate("Subject");
ContentSigner signer = new JcaContentSignerBuilder("SHA512withRSA").build((RSAPrivateKey) priv);
//Sign Data
Signature signature = Signature.getInstance("SHA512WithRSA");
signature.initSign((RSAPrivateKey) priv);
signature.update(file);
//Build cms
CMSTypedData data = new CMSProcessableByteArray(signature.sign());
CMSSignedDataGenerator gen = new CMSSignedDataGenerator();
gen.addSignerInfoGenerator(
new JcaSignerInfoGeneratorBuilder(
new JcaDigestCalculatorProviderBuilder().build())
.build(signer, cert));
//Get signed data
CMSSignedData sigData = gen.generate(data, false);
byte[] sig = (byte[]) sigData.getSignedContent().getContent();
sig.toString();
String content = new String(sig);
System.out.println("Signed content: " + content + "\n");
}
どのように私は、人間が読めるへの署名をフォーマットすることができますか?
どちらのエンコーディング方法でも、エラー:型Hexのメソッドencode(byte [])は引数(CMSSignedData)には適用されません。 – nolags
'byte [] sig'変数を使用する必要があります。 sigData' –