Java映射,用于使用存储在TrustedCA中的私钥对数据进行签名

2020-08-23 08:10发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我想在ESR中使用Java映射执...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我想在ESR中使用Java映射执行签名数据。 如果我用作Java程序,则独立代码可以正常工作,但是当我在ESR中尝试该代码时,我得到了错误的签名。

我不明白如何通过TrustedCA中存储的私钥的路径。

我使用的

代码:-

公共类signData {

public String result ="";

公共字符串signedData(字符串certificateName,字符串certificatePass,字符串数据){

尝试{

byte [] dataByte = data.getBytes();

X509Certificate certificate1 = null; Security.addProvider(new BouncyCastleProvider());

char [] keystorePassword = certificatePass.toCharArray();

char [] keyPassword = certificatePass.toCharArray();

CertificateFactory certFactory = CertificateFactory.getInstance(" X.509"," BC");

KeyStore密钥库= KeyStore.getInstance(" PKCS12");

InitialContext ctx = null;

ctx = new InitialContext();

KeystoreManager管理器= null;

manager =(KeystoreManager)ctx.lookup(" keystore");

keystore = manager.getKeystore(" TrustedCAs");

X509Certificate证书=(X509Certificate)keystore.getCertificate(certificateName);

byte [] certByte = certificate.getEncoded();

InputStream PKstream =新的ByteArrayInputStream(certByte);

keystore.load(PKstream,keystorePassword);

PrivateKey键= null;

KeyManagerFactory kmf = javax.net.ssl.KeyManagerFactory.getInstance(" SunX509");

kmf.init(keystore,keystorePassword);

枚举别名= keystore.aliases();

同时(aliases.hasMoreElements()){

字符串别名= aliases.nextElement();

if(keystore.getCertificate(alias).getType()。equals(" X.509")){

certificate1 =(X509Certificate)keystore.getCertificate(alias);

key =(PrivateKey)keystore.getKey(alias,keyPassword);

}

}

CMSTypedData typedData =新的CMSProcessableByteArray(dataByte);

CMSSignedDataGenerator gen =新的CMSSignedDataGenerator();

ContentSigner签名者=新的JcaContentSignerBuilder(" SHA256withRSA")。setProvider(" BC")。build(key);

JcaSignerInfoGeneratorBuilder构建器=新的JcaSignerInfoGeneratorBuilder(新的JcaDigestCalculatorProviderBuilder()。setProvider(" BC")。build());

gen.addSignerInfoGenerator(builder.build(signer,certificate1));

CMSSignedData已签名= gen.generate(typedData,false);

byte [] der = signed.getEncoded();

字符串符号= Base64.encodeBytes(der);

返回符号;

}

捕获(异常e)

{

return e.getMessage();

}

}

有人可以帮助我吗?

5条回答
小灯塔
2020-08-23 08:41

Hello Lakshay,

我希望该博客可以帮助您解决问题博客,然后也只需博客。 并且如果两者都不起作用,则有大量可用的Java代码可以对您的文件进行签名,这就是博客。 请让我知道它是否有效。

谢谢

Swapnil

一周热门 更多>