中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python 獲取字符串MD5值方法

發布時間:2020-09-14 22:02:43 來源:腳本之家 閱讀:351 作者:Together_CZ 欄目:開發技術

工作中用到了MD5值來進行對文件校驗,MD5本身就是一個很出色的算法,一定程度上解決了hash散列的沖突,關于MD5的內容網上也有很多,這里只要是進行一個實驗,驗證一下文件校驗方面的工作,因為習慣使用了python來完成這樣的任務,這里也是使用python,了解到python本身自帶有hashlib模塊,該模塊中就包含了所需的MD5方法,當然python也有專門的MD5模塊可以使用,使用得當發的大同小異,但是個人覺得hashlib模塊更好用一些,今天就使用python的os、commands還有hashlib三個模塊來進行實驗,其中,前兩個模塊主要是為了可以在python腳本中執行Linux的shell命令,以此來驗證一下同一個文件以及文件內容是否可以得到與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')

#獲取文件內容的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模塊獲取文件內容的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)

下面是結果: 

------------------------------------------------- 
原始字符串為: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模塊獲取文件內容的MD5值為****************************************** 
80d566209acf154dcfdd25f9079792f6 32 
*****************************commands模塊獲取文件的MD5值為****************************************** 
80d566209acf154dcfdd25f9079792f6 Linux.txt 43 

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

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

今天的實驗就這些了。

以上這篇python 獲取字符串MD5值方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

和平区| 乐东| 关岭| 金山区| 蒙阴县| 湖北省| 三门峡市| 日照市| 灯塔市| 固阳县| 葵青区| 盈江县| 梅河口市| 洪洞县| 泌阳县| 台东市| 安仁县| 晋城| 桃江县| 张掖市| 龙岩市| 安顺市| 新河县| 勃利县| 海阳市| 桃江县| 仙游县| 杭州市| 锡林郭勒盟| 永城市| 七台河市| 肥西县| 本溪市| 寻甸| 汉阴县| 城口县| 万盛区| 诸暨市| 中阳县| 武宣县| 吉安县|