我现在正在制作RSA消息认证软件.过程如下:
>使用A的私钥(1024位)对邮件进行签名
>使用A的公钥验证邮件(1024位)
#1代码(如下)工作正常并生成以下结果:
5554c9a9f6838b6cf40d9dbfbab3d90ea27aa6434ed095d289c13c2624617993ad99161ac265276d150510c176341d8ab8600d08b7353286d465e6bd3370a6fd8dd3ffb82916f612fd6dcee5e654ed801cfca6b6d2d5d6dc99ff7921b615abdf62eb67db1f71e6a6ea70012fd35e7cefa1a8d3aab7614c47746cfe1fc2bc875b
但是#2代码显示以下错误:
javax.crypto.IllegalBlockSizeException: Data must not be longer than 128 bytes
我认为#1 Cipher密码中的行= Cipher.getInstance(“RSA / ECB / PKCS1Padding”);
生成2048位(256字节)的结果.也许这就是问题……记住我使用1024位私钥.
那么#1代码如何生成128字节的结果呢?
1. SignMail.java
public class SignMail {
static {
Security.addProvider(new org.spongycastle.jce.provider.BouncyCastleProvider());
}
public static String sign(String userOriginalMessage) throws Exception {