如何从java.security.PublicKey创建AsymmetricKeyParameter

时间:2018-03-01 08:00:06

标签: java android cryptography rsa spongycastle

我正在尝试从我的密码学课程中删除海绵城堡提供者并直接使用Spongy城堡光库(maven:com.madgag:sc-light-jdk15on:1.47.0.3) 我在更改RSA加密逻辑时遇到问题,下面是代码:

原始代码:

final PublicKey pKey = KeyFactory.getInstance("RSA", "SC").generatePublic(new X509EncodedKeySpec(publicKey));
final Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");

修改后的代码:

AsymmetricKeyParameter asypublicKey = PublicKeyFactory.createKey(publicKey);
org.spongycastle.crypto.encodings.PKCS1Encoding e = new org.spongycastle.crypto.encodings.PKCS1Encoding(new RSAEngine());
e.init(true, asypublicKey);

上面的代码似乎和以前不一样。任何人都可以告诉我相当于我可以使用spongycastle库重写的原始代码而不使用Javax.Crypto库吗?

THX

1 个答案:

答案 0 :(得分:1)

RSA PKCS#1加密是不确定的。这是另一种说法,即PKCS#1在使用公共指数执行模幂运算之前用随机值填充明文消息。如果您获得相同的值,那么您就知道某些内容错误,而不是正确。

要测试代码,您只需解密消息即可。如果成功,那么你就知道密文的生成方式是应该的。