【发布时间】:2011-06-22 08:32:00
【问题描述】:
没有密钥分配,用户将知道公钥和私钥(不会使用随机密钥生成器)。我必须用私钥加密散列消息才能提供签名 消息只有 10-20 个字符,因此系统可以尽可能简单
【问题讨论】:
-
我知道已经 5 年了,但我不知道问题是什么。 :(
标签: android certificate rsa encryption
没有密钥分配,用户将知道公钥和私钥(不会使用随机密钥生成器)。我必须用私钥加密散列消息才能提供签名 消息只有 10-20 个字符,因此系统可以尽可能简单
【问题讨论】:
标签: android certificate rsa encryption
要生成数字签名,您不需要加密哈希。签名是一个单独的加密原语;无论如何,哈希都没有加密,有一些填充。也就是说,代码是:
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();
【讨论】:
好的,备份并告诉我们您想要什么。您是想通过保护消息内容来获得隐私,还是通过证明消息确实来自发件人来保证真实性?
如果您正在寻找隐私,那么 RSA 不是最佳选择:使用 RSA 生成私有/公共对,然后使用它们交换密钥 - 或带外交换密钥。使用 AES 等流式算法对消息进行加密。
如果您只想通过签名来显示消息是由您认为的人发起的,那么请查看数字签名上的Wiki article——它相当简单。
【讨论】: