首页 > 其他 > 详细

加密方式

时间:2019-09-16 23:56:43      阅读:131      评论:0      收藏:0      [点我收藏+]

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

(3)
(3)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!