加密方式

1. Hash加密

對明文進行Hash加密,獲得密文,可是密文不能解密爲明文。
例如:Md5 sha1等html

2. 對稱加密

使用密鑰,對明文進行加密,獲得密文
使用密鑰,對密文進行解密,獲得明文
例如 AES算法

3. 非對稱加密

有密鑰和公鑰。
公鑰是全部人均可以看到的。
密鑰只有本身擁有。
使用公鑰,對明文進行加密,獲得密文。
使用密鑰,對密文進行解密,獲得明文。加密

例如RSAcode

4.RSA算法

1.生成公鑰和密鑰

  1. 安裝opensslhtm

    yum install openssl
  2. 生成私鑰blog

openssl genrsa -out private.pem 1024
  • genrsa 表示使用rsa算法
  • -out 表示輸出到文件
  • 1024 表示私鑰的長度
  1. 生成公鑰ssl

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

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

2. 加密和解密

1.公鑰加密,私鑰解密openssl

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有私鑰,才能解密。hash

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算法

未經容許,請不要轉發

相關文章
相關標籤/搜索