我想与SunMSCAPI
提供商签署文件.由于需要使用MS Crypto API导入公钥和签名.
通常生成签名SHA1withRSA
,最终使用big-endian到little-endian(字节顺序)转换.
//generate keystore with java keytool
$Keytool -genkey -alias tsign -keystore c:\test\tsignjks.p12 - keyalg rsa -storetype pkcs12
Run Code Online (Sandbox Code Playgroud)
在Java应用程序中:
//for signing and getting keystore, assuming windows certificate is installed
..ks = KeyStore.getInstance("Windows-MY","SunMSCAPI");
PrivateKey priv = ks.getKey("tsign",password);
Signature rsa = Signature.getInstance("SHA1withRSA","SunMSCAPI");
rsa.initSign(priv);
..
rsa.update(buffer, 0, len);
..
byte[] realSig = rsa.sign();
//for writing public key for ms crypto api or exporting it from windows certificate store
Certificate cert = ks.getCertificate("tsign");
byte[] encodedCert = cert.getEncoded();
FileOutputStream …
Run Code Online (Sandbox Code Playgroud)