hashlib,configparser,logging模塊
阿新 • • 發佈:2017-08-17
文件 md5 value cti option imp round back bsp
一、常用模塊二
hashlib模塊
hashlib提供了常見的摘要算法,如md5和sha1等等。
那麽什麽是摘要算法呢?摘要算法又稱為哈希算法、散列算法。它通過一個函數,把任意長度的數據轉換為一個長度固定的數據串(通常用16進制的字符串表示)。
註意:摘要算法不是一個解密算法。(摘要算法,檢測一個字符串是否發生了變化)
應塗:1.做文件校驗
2.登錄密碼
密碼不能解密,但可以撞庫,用‘加鹽’的方法就可以解決撞庫的問題。所有以後設置密碼的時候要設置的復雜一點。
1 import hashlib 2 # md5_obj = hashlib.md5() 未加鹽 3 md5_obj = hashlib.md5(‘用戶密碼nezha‘.encode(‘utf-8‘)) #加鹽後(就讓你的密碼更牢固了) 4 md5_obj.update(‘123456‘.encode(‘utf-8‘)) 5 print(md5_obj.hexdigest()) 6 md5_obj.update(‘hello‘.encode(‘utf-8‘)) 7 print(md5_obj.hexdigest()) 8 # ----------- 9 user = ‘haiyan‘ 10 password = ‘123456‘ 11 md5_obj= hashlib.md5(user.encode(‘utf-8‘)) #加鹽(哪怕被人的密碼和你的密碼一樣,12 # 那你加鹽以後就只有你的用戶名對應的是你的密碼了) 13 md5_obj.update(password.encode(‘utf-8‘)) 14 print(md5_obj.hexdigest())
1 import hashlib 2 md5_obj = hashlib.md5() 3 import os 4 filesize = os.path.getsize(‘filename‘) #文件大小 5 f = open(‘filename‘,‘rb‘) 6 while filesize>0: 7 if filesize > 1024:文件校驗8 content = f.read(1024) 9 filesize -= 1024 10 else: 11 content = f.read(filesize) 12 filesize -= filesize 13 md5_obj.update(content) 14 # for line in f: 15 # md5_obj.update(line.encode(‘utf-8‘)) 16 md5_obj.hexdigest()
configparser模塊
該模塊適用於配置文件的格式與windows ini文件類似,可以包含一個或多個節(section),每個節可以有多個參數(鍵=值)。
1.創建文件
1 import configparser 2 config = configparser.ConfigParser() 3 config["DEFAULT"] = {‘ServerAliveInterval‘: ‘45‘, 4 ‘Compression‘: ‘yes‘, 5 ‘CompressionLevel‘: ‘9‘, 6 ‘ForwardX11‘:‘yes‘ 7 } 8 config[‘bitbuck et.org‘] = {‘User‘:‘hg‘} 9 config[‘topsecret.server.com‘] = {‘Host Port‘:‘50022‘,‘ForwardX11‘:‘no‘} 10 with open(‘example.ini‘, ‘w‘) as configfile: 11 config.write(configfile)創建文件
2.查找文件
1 import configparser 2 config = configparser.ConfigParser() 3 # print(config.sections()) 4 config.read(‘example.ini‘) 5 print(config.sections()) #讀出來的是文件裏面的組, 6 # 而且裏面的[DEFAULT]組沒有顯示出來 7 print(‘bytebong.com‘ in config) # False 8 print(‘bitbucket.org‘ in config) # True 9 print(config[‘bitbucket.org‘]["user"]) # hg 10 print(config[‘DEFAULT‘][‘Compression‘]) #yes 11 print(config[‘topsecret.server.com‘][‘ForwardX11‘]) #no 12 print(config[‘bitbucket.org‘]) #<Section: bitbucket.org> 13 for key in config[‘bitbucket.org‘]: # 註意,有default會默認default的鍵 14 print(key) 15 print(config.options(‘bitbucket.org‘)) # 同for循環,找到‘bitbucket.org‘下所有鍵 16 print(config.items(‘bitbucket.org‘)) #找到‘bitbucket.org‘下所有鍵值對 17 print(config.get(‘bitbucket.org‘,‘compression‘)) # yes get方法Section下的key對應的value查找文件
3.增刪改操作
1 import configparser 2 config = configparser.ConfigParser() 3 config.read(‘example.ini‘) 4 config.add_section(‘yuan‘) 5 # config.remove_section(‘bitbucket.org‘) #刪除組 6 # config.remove_option(‘topsecret.server.com‘,"forwardx11") #刪除組裏面的項 7 config.set(‘topsecret.server.com‘,‘k1‘,‘11111‘) 8 config.set(‘yuan‘,‘k2‘,‘22222‘) 9 config.write(open(‘new2.ini‘, "w"))增刪改操作
logging模塊
hashlib,configparser,logging模塊