公钥与私钥的产生
假设Alice想要通过一个不可靠的媒体接收Bob的一条私人消息。她可以用以下的方式来产生一个公钥和一个私钥:
是公钥,
是私钥。Alice将她的公钥
传给Bob,而将她的私钥
藏起来。
加密消息
假设Bob想给Alice送一个消息,他知道Alice产生的
和
。他使用起先与Alice约好的格式将
转换为一个小于
的整数
,比如他可以将每一个字转换为这个字的Unicode码,然后将这些数字连在一起组成一个数字。假如他的信息非常长的话,他可以将这个信息分为几段,然后将每一段转换为
。用下面这个公式他可以将
加密为
:
计算并不复杂。Bob算出
后就可以将它传递给Alice。
解密消息
Alice得到Bob的消息后就可以利用她的密钥
来解码。她可以用以下这个公式来将
转换为
:
得到后,她可以将原来的信息
重新复原。
解码的原理是
以及和
。由欧拉定理可证明(因为
和
是质数)
-
和
这说明(因为和
是不同的质数,所以
和
互质)
签名消息
RSA也可以用来为一个消息署名。假如甲想给乙传递一个署名的消息的话,那么她可以为她的消息计算一个散列值(Message digest),然后用她的密钥(private key)加密这个散列值并将这个“署名”加在消息的后面。这个消息只有用她的公钥才能被解密。乙获得这个消息后可以用甲的公钥解密这个散列值,然后将这个数据与他自己为这个消息计算的散列值相比较。假如两者相符的话,那么他就可以知道发信人持有甲的密钥,以及这个消息在传播路径上没有被篡改过。
---来自维基