Python---暗号解読(hashlib、rsa)

2976 ワード

hashlibモジュール暗号化
import hashlib

new_md5 = hashlib.md5()       #   hashlib md5  
new_md5.update("python")      #        md5   ,  md5    。
result = new_md5.hexdigest()  #   hexdigest()  ,  new_md5   16  md5  。
print result      #   :23eeeb4347bdd26bfc6b7ee9a3b755dd


#           :md5, sha1, sha224, sha256, sha384, sha512
# new_md5 = hashlib.md5()   
# new_sha1 = hashlib.sha1()  
# new_sha256 = hashlib.sha256()
import hashlib,time

new_md5 = hashlib.new('md5', b'python').hexdigest()
print new_md5      #   :23eeeb4347bdd26bfc6b7ee9a3b755dd
new_md5 = hashlib.md5("python".encode('utf-8')).hexdigest()
print new_md5      #   :23eeeb4347bdd26bfc6b7ee9a3b755dd
import hashlib

# yan = "! # % ^ @"  #       
yan = "salt"
pwd = "python"
md5_pwd = hashlib.md5()
md5_pwd.update((pwd+yan).encode('utf-8'))  #  
pwd = md5_pwd.hexdigest()
print pwd
#pwd = hashlib.new('md5',(pwd+yan).encode('UTF-8')).hexdigest()   #        。

#   :https://www.cnblogs.com/sly27/p/8716626.html
# -*- coding:utf-8 -*-
import hashlib

def hashStr(strInfo):
    h = hashlib.sha1()
    h.update(strInfo.encode("utf-8"))
    return h.hexdigest()

result = hashStr("hello word")
print result

RSA暗号化/復号化、署名/検証
# -*- coding:utf-8 -*-
import rsa

#     :  RSA     
(pubkey, privkey) = rsa.newkeys(1024)

#     (        )
with open('public.pem', 'w+') as f:
    f.write(pubkey.save_pkcs1().decode())
with open('private.pem', 'w+') as f:
    f.write(privkey.save_pkcs1().decode())

#     
with open('public.pem', 'r') as f:
    pubkey = rsa.PublicKey.load_pkcs1(f.read().encode())
with open('private.pem', 'r') as f:
    privkey = rsa.PrivateKey.load_pkcs1(f.read().encode())

#   
message = "python"

#        ,    
crypto = rsa.encrypt(message.encode(), pubkey)

#        ,    
message = rsa.decrypt(crypto, privkey).decode()
print message


message = "         !"
#     
signature = rsa.sign(message.encode("utf-8"), privkey, 'SHA-1')
#     :        、  ,       ,      
result = rsa.verify(message.encode("utf-8"), signature, pubkey)
print result

#   :https://www.cnblogs.com/hhh5460/p/5243410.html
#   :https://blog.csdn.net/u013421629/article/details/83895861

登録時パスワード暗号化とログイン時パスワード検証
# -*- coding:utf-8 -*-
from passlib.hash import pbkdf2_sha512

#  love       ,love   ,password_hash   。
password_hash = pbkdf2_sha512.encrypt("love")
print password_hash      #   :$pbkdf2-sha512$25000$wnjvvdf6XytFyHlPyVkLAQ$2kL4UztPbWoQmblT4TRxOUoCiDNYvSwGd1EYOWcqhrYUpH9MXHfzaFFw3fGyRsfIZy8SDlXD1HP2U4AlIsdBTA

#  love       ,love   ,password_hash   。
result = pbkdf2_sha512.verify("love", password_hash)
print result      #   :True