前言
复习一手rsa加密,感觉已经有点记不清了
找出质数
找出质数
P Q
计算公共模数
计算公共模数
N = P*Q
计算欧拉函数
计算欧拉函数
φ(N)= (P-1)*(Q-1)
计算公钥
计算公钥E
E的取值必须是整数,E和φ(N)必须是互质数
1<E<φ(N)
计算私钥
计算私钥D
E*D%φ(N)=1
加密
加密
M的E次方,不是异或
C=M^E mod N
C是密文
解密
解密
M=C^D mod N
M是明文
附一个python代码
加密
import base64
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5 as Cipher_pkcs1_v1_5
public_key = """-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDXddSrqcIqW7DT8FioLigAhkzb
acDSSrrDfcd1TFnDEuQgyxDKoqmcE5pcoNkPZXJHAaf826igF9KHhRhnCeRvs7b8
By3njyseQ3cThjyq+csLHhrlL5Hhf/mVj8TBvyJSRInYHFPIojGFsVjOiIaOUxnp
Ut9uzfCY6K7qf3EOxwIDAQAB
-----END PUBLIC KEY-----
"""
text = 'abcdefg'
a = bytes(msg, encoding="utf8")
rsakey = RSA.importKey(public_key)
cipher = Cipher_pkcs1_v1_5.new(rsakey)
cipher_text = base64.b64encode(cipher.encrypt(a))
print(cipher_text)
解密
import base64
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5 as Cipher_pkcs1_v1_5
decodeStr = base64.b64decode(cipher_text) # cipher_text是上面rsa加密的内容
prikey = Cipher_pkcs1_v1_5.new(RSA.importKey(private_key))
encry_text = prikey.decrypt(decodeStr, b'rsa')
encry_value = encry_text.decode('utf8')
print(encry_value) # abcdefgh