发布网友 发布时间:2022-04-24 17:09
共1个回答
热心网友 时间:2023-10-24 23:55
RSA公钥密码*是以发明该*的三位密码学家Rivest,Shamir和Adleman的名字命名的,目前成为商业化最成功的算法。
选择两个大素数p和q,另n=pq,按照一定规则选择随机数e和d,使其满足ed mod (p-1)(q-1)=1。则公开(e, n)为用户公开密钥,保留d作为对应的用户私钥。
如果想将明文消息M加密后发给该用户,则密文C的计算过程如下:C=Me mod n。
当用户收到密文C后,计算Cd mod n=M 就恢复出密文了。
RSA公钥*的安全是建立在大整数的素因子分解这一数学难题之上的。一旦人们发现一种分解大整数的有效方法,则RSA公钥密码*的安全性随着崩溃。
RSA公钥密码*可以很容易改造成为数字签名方案。假设一个用户(用户A)拥有RSA公私钥对,即拥有对应公钥(e, n)的私钥d。
当用户A要对明文消息m进行数字签名时,计算s=md mod n,则s就是对消息m的数字签名。
当一个用户(用户B)要对该用户A的数字签名进行验证时,用户B需要得到明文消息m和数字签名s,然后验证等式se mod n=m是否成立,如果成立,则验证通过,否则,不能接受s为m的合法数字签名。
注意数字签名不提供消息的机密性,因为签名者需要将签名消息m和签名s同时发给验证者。如果在此过程中不希望其他人能非法获取m的内容,需要再对m进行加密处理,这种情况不是简单的数字签名,而是加密与数字签名的结合。一种更有效的途径是使用签密算法(SignEncryption)。
(转载前请告知)