加密方式

时间:2019-09-16
本文章向大家介绍加密方式,主要包括加密方式使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1. Hash加密

对明文进行Hash加密,得到密文,但是密文不能解密为明文。
例如:Md5 sha1等

2. 对称加密

使用密钥,对明文进行加密,得到密文
使用密钥,对密文进行解密,得到明文
例如 AES

3. 非对称加密

有密钥和公钥。
公钥是所有人都可以看到的。
密钥只有自己拥有。
使用公钥,对明文进行加密,得到密文。
使用密钥,对密文进行解密,得到明文。

例如RSA

4.RSA算法

1.生成公钥和密钥

  1. 安装openssl

    yum install openssl
  2. 生成私钥

openssl genrsa -out private.pem 1024
  • genrsa 表示使用rsa算法
  • -out 表示输出到文件
  • 1024 表示私钥的长度
  1. 生成公钥

    openssl rsa -in private.pem -pubout -out public.pem

  • private.pem 是私钥的文件地址

2. 加密和解密

1.公钥加密,私钥解密

from M2Crypto import RSA
msg = 'aaaa-aaaa'
rsa_pub = RSA.load_pub_key('public.pem')
rsa_pri = RSA.load_key('private.pem')

print '公钥加密'
en_msg=rsa_pub.public_encrypt(msg,RSA.pkcs1_padding)
en_msg64=en_msg.encode('base64')
print '密文base64',en_msg64
print '私钥解密'
de_msg=rsa_pri.private_decrypt(en_msg,RSA.pkcs1_padding)
print '明文',de_msg

这个用于加密传输的数据。例如A用公钥加密信息,传送给B,只要B有私钥,才能解密。

2.私钥加密,公钥解密

print '###################################'
print '私钥加密'
en_msg=rsa_pri.private_encrypt(msg, RSA.pkcs1_padding)
en_msg64=en_msg.encode('base64')
print '密文base64',en_msg64

print '公钥解密'
de_msg=rsa_pub.public_decrypt(en_msg,RSA.pkcs1_padding)
print '明文',de_msg

这个用于生成数字签名。也就是证明数据是私钥拥有者发送的,而且未被修改。
例如

  • B对发送给A的数据DATA,进行hash加密,得到HASH,
  • B使用私钥对HASH加密,得到EN_HASH(这个就是数字签名),
  • B发送DATA和EN_HASH给A
  • A使用公钥解密EN_HASH,如果成功,表示这个数据是B发送的,否则就不是
  • A对DATA进行hash加密,得到HASH1,如果HASH1和HASH相同,表示DATA没有被修改,否则就是修改了。

由于所有人都有公钥,所有人都能解密,所以如果这个方法不能用来加密数据。

RSA算法

未经允许,请不要转发

原文地址:https://www.cnblogs.com/Xjng/p/11530927.html