【发布时间】:2015-02-19 17:29:05
【问题描述】:
我正在尝试在 Java Card 上重新创建一个公钥并使用它来加密一些数据。
这是构建我正在使用的公钥的代码:
rsaPublicId = (RSAPublicKey) KeyBuilder.buildKey(KeyBuilder.TYPE_RSA_PUBLIC, KeyBuilder.LENGTH_RSA_2048, false);
rsaPublicId.setExponent(rsaExponent, (short) 0, (short) rsaExponent.length);
rsaPublicId.setModulus(rsaPublicModulus, (short) 12, (short) ((short) rsaPublicModulus.length - (short) 12));
cipherId.init(rsaPublicId, Cipher.MODE_ENCRYPT);
当我尝试加密数据时,我使用以下代码:
cipherId.doFinal(serviceBytes, (short) 0, (short) 16, buffer, (short) 0);
但它会发生 javacard.security.cryptoException,详细消息为“null”
cipherId = Cipher.getInstance(Cipher.ALG_RSA_PKCS1, false);
模数设置为308的大小,用Java创建并发送到卡上。
【问题讨论】:
-
请用 try-catch 块包围您的异常,并告诉我们在异常实例上调用 getReason() 的结果是什么。
-
在异常中出现代码 5。它说“/***这个原因码用于表明签名或密码算法没有填充传入消息并且输入消息不是块对齐的。*/ public static final short ILLEGAL_USE = 5;”
-
什么详细信息? Java Card Classic 中没有详细消息之类的东西。我的意思是:甚至不支持字符串......
-
可以看到带有debug的消息。
标签: java encryption key javacard