KLStudio

欢迎来到我的主页

RSA算法

  • 非对称加密:又名“公开密钥加密算法”,非对称加密算法需要两个密钥:公开密钥和私有密钥,常见算法有:RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)
  • 对称加密:采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,也称为单密钥加密。常见算法有:DES、IDEA、RC2、RC4、SKIPJACK、RC5、AES

RSA

RSA的算法涉及三个参数,n、e1、e2。 其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。 ee和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)(q-1)互质;再选择e2,要求(e2e1)mod((p-1)*(q-1))=1。 (n及e1),(n及e2)就是密钥对。

RSA加解密的算法完全相同,设A为明文,B为密文,则:A=Be1 mod n;B=Ae2 mod n; e1和e2可以互换使用,即: A=Be2 mod n;B=Ae1 mod n;

使用RSA有两种情况:

  1. 对数据加密:您希望只有您的朋友可以解密,这样的话,您需要首先获取您朋友的密钥对中公开的那一个密钥,e及n。然后用这个密钥进行加密,这样密文只有您的朋友可以解密,因为对应的私钥只有您朋友拥有。

  2. 数字签名:您向朋友传送一段数据附加您的数字签名,您需要对您的数据进行MD5之类的运算以取得数据的”指纹”,再对”指纹”进行加密,加密将使用您自己的密钥对中的不公开的私钥。您的朋友收到数据后,用同样的运算获得数据指纹,再用您的公钥对加密指纹进行解密,比较解密结果与他自己计算出来的指纹是否一致,即可确定数据是否的确是您发送的、以及在传输过程中是否被篡改。

密钥的获得:通常由某个机构颁发(如CA中心),当然也可以自己创建密钥,但这样创建的密钥不具有权威性。

密钥的计算:如果加密强度为1024位,则结果会在有效数据前面补0以补齐不足的位数。补入的0并不影响解密运算。

Comments