RC4&RSA
RC4&RSA加密
RC4
RC4加密算法是一种对称加密算法
RC4于1987年提出,和DES算法一样,是一种对称加密算法,也就是说使用的密钥为单钥(或称为私钥)。但不同于DES的是,RC4不是对明文进行分组处理,而是字节流的方式依次加密明文中的每一个字节,解密的时候也是依次对密文中的每一个字节进行解密。
也就是说以流式进行异或,解密时只需相同逻辑即可异或解密
1 | key = list('RC4_1s_4w3s0m3') |
RSA
安全算法:公开密钥加密之RSA算法
非对称加密是加密和解密使用不同密钥的一种加密方法。包括公开密钥和私有密钥
公开密钥(public key,后面简称P):加密用的密钥
私有密钥(secret key,后面简称S):解密用的密钥
今天只有短的RSA钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。但在分布式计算和量子计算机理论日趋成熟的今天,RSA加密安全性受到了挑战。
密钥计算方法
- 选择两个大素数p和q(典型值为1024位)
- 计算
n=p×q
和z=(p-1)×(q-1)
// n表示欧拉函数 - 选择一个与z互质的数,令其为d(如8和15)
- 找到一个 e 使满足
exd = 1 (mod z)
(把e
和d
相乘,再除以z
,余数等于 1,e
和d
互为模z
的逆元) - 公开密钥为
(e,m)
,私有密钥为(d,m)
- 将明文看成比特串,将明文划分成k位的块 P 即可,这里k是满足 2*k<n 的最大整数。
- 对每个数据块 P,计算 C= P^e^(mod n),C 即为P的密文。
对每个密文块 C,计算 P=C^d^(mod n),P即为明文
假设需要加密的明文信息为m=85,选择:e=7,p=11,q=13,说明使用RSA算法的加密和解密(计算密文并还原)
1 | n=p*q=11*13=143 |
公钥:(e,n)=(7,143)
密文c=p^e^ (mod n)=123
解密:
密钥:(d,n)=(103,143) 明文:P=c^d^ (mod n)=85
1 | import gmpy2 |
1 | import libnum |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Matriy's blog!
评论