RSA算法PKCS#1.5填充(非OEAP)密码加密,使用Java中的客户端证书公钥

RSA算法PKCS#1.5填充(非OEAP)密码加密,使用Java中的客户端证书公钥,java,encryption,cryptography,rsa,verisign,Java,Encryption,Cryptography,Rsa,Verisign,我不熟悉Java中的RSA算法和加密技术。我有第三方组织提供的客户证书,格式为.cer。现在我需要使用密码密钥证书的公共部分加密密码,使用RSA算法和Java中的PKCS#1.5填充(而不是OAEP) 您能否检查以下各项是否执行上述操作 Security.addProvider(neworg.bouncycastle.jce.provider.BouncyCastleProvider()); byte[] input = "Abc123".getBytes(); Cipher cipher =

我不熟悉Java中的RSA算法和加密技术。我有第三方组织提供的客户证书,格式为
.cer
。现在我需要使用密码密钥证书的公共部分加密密码,使用RSA算法和Java中的PKCS#1.5填充(而不是OAEP)

您能否检查以下各项是否执行上述操作

Security.addProvider(neworg.bouncycastle.jce.provider.BouncyCastleProvider());
byte[] input = "Abc123".getBytes();
Cipher cipher = Cipher.getInstance("RSA/None/PKCS1Padding", "BC");
FileInputStream fin = new FileInputStream(new File("/test.cer"));
CertificateFactory f = CertificateFactory.getInstance("X.509");
X509Certificate certificate = (X509Certificate)f.generateCertificate(fin);
PublicKey pk = certificate.getPublicKey();
cipher.init(Cipher.ENCRYPT_MODE, pk, new SecureRandom());
byte[] cipherText = cipher.doFinal(input);

是的,您提供的代码看起来不错

请注意,如果将
“RSA/None/pkcs1ppadding”
替换为
“RSA/ECB/pkcs1ppadding”
,则可以使用默认的Sun提供程序


需要注意的是,您的代码生成一个“普通”签名;它不包括您的数据或证书。一般来说,最好创建一个结构,例如可以包含用于创建签名的“叶”证书

CMS是一种所谓的加密容器格式,它可以保存数据、签名和有关签名算法、证书、签名者等的附加信息。

new SecureRandom()
也可以,但可以忽略不计。