用户不知道密钥分发,公钥和私钥(不使用随机密钥生成器)。我必须使用私钥加密散列消息以提供签名 消息只有10-20个字符,因此系统可以尽可能简单
答案 0 :(得分:2)
好的,请备份并告诉我们您的需求。您是想通过保护邮件内容来获取隐私,还是通过显示邮件真的来自发件人来保证真实性?
如果您正在寻找隐私,RSA不是可行的方法:使用RSA生成私有/公共对,然后使用它们来取代密钥 - 或者在带外交换密钥。使用AES之类的流式算法来加密消息。
如果您只是希望签名显示消息是由您认为的那个人发起的,那么请查看数字签名上的Wiki article - 这是相当简单的。
答案 1 :(得分:2)
要生成数字签名,您不需要加密哈希。签名是一个单独的加密原语;无论如何,哈希都没有加密原始,有一些填充。也就是说,代码是:
Signature Signer = Signature.getInstance("SHA1withRSA");
Signer.initSign(MyKey, new SecureRandom()); //Where do you get the key?
byte []Message = MyMessage(); //Initialize somehow
Signer.update(Message, 0, Message.length);
byte [] Signature = Sign.sign();