欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python 獲取字符串MD5值方法

 更新時間:2018年05月29日 14:34:53   作者:Together_CZ  
今天小編就為大家分享一篇python 獲取字符串MD5值方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

工作中用到了MD5值來進行對文件校驗,MD5本身就是一個很出色的算法,一定程度上解決了hash散列的沖突,關(guān)于MD5的內(nèi)容網(wǎng)上也有很多,這里只要是進行一個實驗,驗證一下文件校驗方面的工作,因為習慣使用了python來完成這樣的任務(wù),這里也是使用python,了解到python本身自帶有hashlib模塊,該模塊中就包含了所需的MD5方法,當然python也有專門的MD5模塊可以使用,使用得當發(fā)的大同小異,但是個人覺得hashlib模塊更好用一些,今天就使用python的os、commands還有hashlib三個模塊來進行實驗,其中,前兩個模塊主要是為了可以在python腳本中執(zhí)行Linux的shell命令,以此來驗證一下同一個文件以及文件內(nèi)容是否可以得到與hashlib模塊MD5方法相同的MD5值,好了不多說了,下面是程序,很簡單的一個驗證,里面都有詳細的注釋就不多解釋了:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

'''
功能:校驗文件MD5值
'''
import hashlib, binascii
import md5
import os
import commands



#使用python自帶的hashlib庫
def get_md5_value(str):
 my_md5 = hashlib.md5()#獲取一個MD5的加密算法對象
 my_md5.update(str) #得到MD5消息摘要
 my_md5_Digest = my_md5.hexdigest()#以16進制返回消息摘要,32位
 return my_md5_Digest

#使用python自帶的hashlib庫如果m.update(a)之后在 m.update(b),那么就相當于m.update(a+b),這里驗證一下
def get_md5_value_two(str1, str2):
 my_md52 = hashlib.md5()
 my_md52.update(str1)
 my_md52.update(str2)
 my_md52_Digest = my_md52.hexdigest()
 return my_md52_Digest

#使用SHA1
def get_sha1_value(str):              
 my_sha = hashlib.sha1()
 my_sha.update(str)
 my_sha_Digest = my_sha.hexdigest()
 return my_sha_Digest
#利用os模塊system()方法獲取文件的MD5值 
def get_file_md5_value(filename): 
 return os.system('md5sum ' + filename + '|cut -f1') 
#利用os模塊popen()方法獲取文件的MD5值

def get_popen_file_md5_value(filename):
    return os.popen('md5sum ' + filename + '|cut -f1')

#獲取文件內(nèi)容的MD5值
def get_file_content_md5_value(filename):
    fp = open(filename)
    fp_content = fp.read()
    return get_md5_value(fp_content)


#利用commands模塊獲取文件的MD5值
def get_commands_file_md5_value(filename):
    return commands.getoutput('md5sum ' + filename + '|cut -f1')

if __name__ == '__main__':
 string1 = 'We are friends!!!'
 string2 = 'Do agree with me?'
 filename = 'Linux.txt'
 result_md5_value = get_md5_value(string1)
 result_sha1_value = get_sha1_value(string1)
 print '-------------------------------------------------'
 print '原始字符串為:'+string1
 print 'hashlib模塊MD5值為:'+result_md5_value,len(result_md5_value)
 print 'SHA1值為:'+result_sha1_value,len(result_sha1_value)
 print '-------------------------------------------------'
 result_md5_value = get_md5_value(string2)
 result_sha1_value = get_sha1_value(string2)
 print '原始字符串為:'+string2
 print 'hashlib模塊MD5值為:'+result_md5_value,len(result_md5_value)
 print 'SHA1值為:'+result_sha1_value,len(result_sha1_value)
 print '----------------------驗證---------------------------'
 result_md5_value = get_md5_value(string1+string2)
 result_sha1_value = get_sha1_value(string1+string2)
 print '原始字符串為:', string1+string2
 print 'hashlib模塊MD5值為:'+result_md5_value,len(result_md5_value)
 print 'SHA1值為:'+result_sha1_value,len(result_sha1_value)
 print '-----------------------整體MD5--------------------------'
 result_md52_value = get_md5_value_two(string1, string2)
 print '原始字符串為:', string1+string2
 print 'hashlib模塊MD5值為:'+result_md52_value,len(result_md52_value)
 print '****************************os模塊獲取文件的MD5值為*******************************************'
 result_file_value = get_file_md5_value(filename)
 print result_file_value 
 result_popen_file_md5_value = get_popen_file_md5_value(filename)
 print result_popen_file_md5_value 
 print '*****************************os模塊獲取文件內(nèi)容的MD5值為******************************************'
 result_file_content_value = get_file_content_md5_value(filename)
 print result_file_content_value, len(result_file_content_value)
 print '*****************************commands模塊獲取文件的MD5值為******************************************'
 result_commands_file_md5_value = get_commands_file_md5_value(filename)
 print result_commands_file_md5_value, len(result_commands_file_md5_value)

下面是結(jié)果: 

------------------------------------------------- 
原始字符串為:We are friends!!! 
hashlib模塊MD5值為:469306cbddd0cc5917b9536c54e619ab 32 
SHA1值為:7a3f8637b61108f702052dda52e1251392228260 40 
------------------------------------------------- 
原始字符串為:Do agree with me? 
hashlib模塊MD5值為:54f45c7d0aa071186a0ec4a030213d8a 32 
SHA1值為:0a2c0f3317862f7055605e1faab7f02f35f466de 40 
----------------------驗證--------------------------- 
原始字符串為: We are friends!!!Do agree with me? 
hashlib模塊MD5值為:bd77df50992d4d8b65f19d47a15132fe 32 
SHA1值為:83bc19fc724aaa991a0278fbb1be210bc28757fb 40 
-----------------------整體MD5-------------------------- 
原始字符串為: We are friends!!!Do agree with me? 
hashlib模塊MD5值為:bd77df50992d4d8b65f19d47a15132fe 32 
****************************os模塊獲取文件的MD5值為******************************************* 
80d566209acf154dcfdd25f9079792f6 Linux.txt 
0 
<open file 'md5sum Linux.txt|cut -f1', mode 'r' at 0x7f6d99b010c0> 
*****************************os模塊獲取文件內(nèi)容的MD5值為****************************************** 
80d566209acf154dcfdd25f9079792f6 32 
*****************************commands模塊獲取文件的MD5值為****************************************** 
80d566209acf154dcfdd25f9079792f6 Linux.txt 43 

感覺還是效率很不錯的,感興趣的同學可以拿去實驗一下,這里使用到的文件Linux.txt粘貼出來:

1.[root@localhost/root]# 表示登陸進去系統(tǒng),其中#是超級用戶也即root用戶的系統(tǒng)提示符
2.reboot命令可以重啟系統(tǒng)
3.關(guān)閉系統(tǒng)使用(該命令只可被超級用戶使用):shutdown[選項][時間][警告信息]
-k:不真正關(guān)機只是發(fā)警告系想你給所有用戶
-r:關(guān)機后立刻重啟
-h:關(guān)機后不啟動
-f:快速關(guān)機重啟時跳過fsck
-n:快速關(guān)機不經(jīng)過init程序
-c:取消一個已經(jīng)運行的shutdown
4.文件操作命令
ls -a列出目錄下面所有文件名包括隱藏的文件即以“.”開頭的文件
ls -l使用長格式列出文件
ls -F在列出的文件名稱后面加一個符號(如可執(zhí)行文件加*目錄加/)
mkdir filename創(chuàng)建新的目錄
rmdir filename刪除已經(jīng)建立的目錄
cd filename 進入文件目錄
cp -r 源文件 目的文件 復制文件
rm -r filename刪除該目錄以及目錄下所有的子目錄
rm -f不經(jīng)確認強制刪除文件
rm -i filename 刪除文件
mv 源文件路徑 目的文件路徑 移動文件命令
mv filename1 filename2 重命名
cat filename顯示文本文件內(nèi)容
cat file1 file2 file3依次顯示3個文件
cat -n filename顯示文檔內(nèi)容的同時顯示行號
more filename顯示文本文件(內(nèi)容較多的)
pwd顯示當前路徑
5.用戶以及用戶組管理
useradd username創(chuàng)建新的用戶
userdel username刪除用戶
groupadd groupname創(chuàng)建新的用戶組
groupdel groupname刪除用戶組
su -username賦予普通用戶特權(quán)或超級用戶別的身份
chomd[who][+|-|=][mode]filename勇于改變文件或者目錄的訪問權(quán)限
chown[用戶:組]文件 用于更改某個文件或者目錄的屬主和屬組
6.進程管理命令
ps -e顯示所有的進程
ps -f全格式
ps -l長格式
top 動態(tài)顯示當前進程和其他情況輸入,可以加上參數(shù):
q可以退出查看的頁面
(空格)立即刷新顯示
h/?顯示幫主畫面
m切換顯示內(nèi)存信息
t切換顯示進程和CPU信息
c切換顯示命令名稱和完整命令行
M根據(jù)駐留內(nèi)存大小進行排序
P根據(jù)CPU使用百分比大小進行排序
kill命令用于殺死后臺的進程主要有兩種使用方法:
kill[-s 信號] 進程號 殺死指定進程
kill -l顯示進程列表
cron命令用來實現(xiàn)定時任務(wù)的完成,非手工啟動
cron -l查看目前已經(jīng)存在的cron任務(wù)
7.磁盤及文件命令
 df -k顯示各個分區(qū)的磁盤空間使用情況
 mount[選項]設(shè)備 目錄 掛載文件
 umount[-f]directory強制卸載一個文件系統(tǒng)
 8.軟件安裝命令
 tar -c filename創(chuàng)建一個新的檔案文件
 tar -t filename查看檔案文件的內(nèi)容
 tar -x filename分解檔案文件的內(nèi)容
 tar -f filename指定檔案文件的名稱
 tar -v filename顯示過程信息
 tar -z filename采用壓縮方式
 rpm -i packagename安裝包
 rpm -U packagename升級包
 rpm -qa列出已經(jīng)安裝的全部軟件包
 rpm -qf filename查詢某個特定的文件屬于哪個包
 rpm -qi packagename查詢某個包的功能
 rpm -e packagename刪除包
 9.vim使用
 vim有三個模式:命令行模式、文本輸入模式、末行模式
 輸入vim即可進入vim編輯器,點擊ESC即可進入命令行模式,點擊i即可進入文本編輯模式輸入:即可進入末行模式
 在末行模式輸入q即可退出;輸入wq即可保存操作后退出;輸入q!強制退出
 10.head/tail
 head -n x filename查看文件的前x行內(nèi)容
 tail -n y filename查看文件的后y行內(nèi)容
 head filename查看文件的前十行內(nèi)容
 tail filename查看文件的后十行內(nèi)容
 tail -f filename顯示后十行內(nèi)容,并且在內(nèi)容增加后自動顯示新增的文件內(nèi)容
 11.網(wǎng)絡(luò)配置
 ifconfig -a查看所有網(wǎng)卡狀態(tài)信息
 ifconfig -V查看ifconfig命令版本信息
 ifconfig -s查看統(tǒng)計信息
 ifconfig eth ipaddress 設(shè)置網(wǎng)卡IP
 ifconfig eth down 關(guān)閉網(wǎng)卡
 ifconfig eth up啟動激活網(wǎng)卡
 ifconfig eth netmask netmaskaddress 設(shè)置網(wǎng)卡的子網(wǎng)掩碼地址
 ifconfig eth ipaddress netmask netmaskaddress 同時設(shè)置IP和子網(wǎng)掩碼地址
 ifconfig eth查看網(wǎng)卡狀態(tài)
 route查看路由信息
 route add -net ipaddress netmask netmaskaddress dev eth指定接口
 netstat顯示網(wǎng)絡(luò)情況
 ping檢測網(wǎng)絡(luò)連通性
 nslookup ip查看該IP對應(yīng)的域名
 host domainname查詢對應(yīng)域名的IP
 12.時間
 /sbin/hwclock --show查看當前硬件時間
 /sbin/hwclock --hctosys將硬件時間同步到Linux系統(tǒng)
 /sbin/hwclock --systohc將Linux時間同步到硬件時間
 13.文檔
 df -k以KB為單位顯示各分區(qū)的信息
 df -a顯示所有分區(qū)包括大小為0的分區(qū)
 df -T顯示分區(qū)類型
 du -b /file以字節(jié)為單位顯示file文件夾下各個文件夾的大小
 du -ks file以KB為單位顯示file文件夾總大小
 iostat顯示CPU的情況
 tar -c創(chuàng)建包
 tar -x解包
 tar -t列出包中的內(nèi)容
 tar -r增加文件到指定包中
 tar -u更新包中的文件
 tar -zcvf file.tar.gz file壓縮file
 tar -zxvf file.tar.gz file解壓縮file.tar.gz
 find -name file1查找file1
 grep[命令選項]要查找的匹配模式[要查找的文件] 查找文件
 grep str1 file在file中查找字符串str1
 grep -r str1 /file在/file及其子目錄下所有文件中查找字符串str1
 ps -ef | grep filename在所有進程中查找包含filename的進程信息
 14服務(wù)
 service tomcat4 start啟動tomacat4服務(wù)
 service tomcat4 stop關(guān)閉tomacat4服務(wù)

今天的實驗就這些了。

以上這篇python 獲取字符串MD5值方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python字典鍵值對的添加和遍歷方法

    python字典鍵值對的添加和遍歷方法

    下面小編就為大家?guī)硪黄猵ython字典鍵值對的添加和遍歷方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • python虛擬環(huán)境的安裝和配置(virtualenv,virtualenvwrapper)

    python虛擬環(huán)境的安裝和配置(virtualenv,virtualenvwrapper)

    這篇文章主要介紹了python虛擬環(huán)境的安裝和配置(virtualenv,virtualenvwrapper),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • Python 如何創(chuàng)建一個簡單的REST接口

    Python 如何創(chuàng)建一個簡單的REST接口

    這篇文章主要介紹了Python 如何創(chuàng)建一個簡單的REST接口,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • Python之ThreadPoolExecutor線程池問題

    Python之ThreadPoolExecutor線程池問題

    這篇文章主要介紹了Python之ThreadPoolExecutor線程池問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • pycharm與jupyter?lab/notebook結(jié)合使用方式

    pycharm與jupyter?lab/notebook結(jié)合使用方式

    這篇文章主要介紹了pycharm與jupyter?lab/notebook結(jié)合使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Python功能點實現(xiàn):函數(shù)級/代碼塊級計時器

    Python功能點實現(xiàn):函數(shù)級/代碼塊級計時器

    今天小編就為大家分享一篇關(guān)于Python功能點實現(xiàn):函數(shù)級/代碼塊級計時器,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • python?matplotlib保存圖片太慢如何解決

    python?matplotlib保存圖片太慢如何解決

    這篇文章主要介紹了python?matplotlib保存圖片太慢問題的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 使用 python pyautogui實現(xiàn)鼠標鍵盤控制功能

    使用 python pyautogui實現(xiàn)鼠標鍵盤控制功能

    pyautogui是一個可以控制鼠標和鍵盤的python庫,類似的還有pywin32。這篇文章主要介紹了python中的pyautogui實現(xiàn)鼠標鍵盤控制功能,需要的朋友可以參考下
    2019-08-08
  • Python文件讀寫常見用法總結(jié)

    Python文件讀寫常見用法總結(jié)

    今天小編就為大家分享一篇關(guān)于Python文件讀寫常見用法總結(jié),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • Python JSON格式數(shù)據(jù)的提取和保存的實現(xiàn)

    Python JSON格式數(shù)據(jù)的提取和保存的實現(xiàn)

    這篇文章主要介紹了Python JSON格式數(shù)據(jù)的提取和保存的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03

最新評論