admin管理员组

文章数量:1639675

基本概念

  • MD5,全名Message Digest Algorithm 5 ,中文名为消息摘要算法第五版,为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护

  • 主要是通过特定的hash散列方法将文本信息转换成简短的信息摘要,压缩+加密+hash算法的结合体,是绝对不可逆的

  • 不同消息(文件)的MD5码不一样,所以经常用来检验文件是否被修改过。

使用MD5加密消息和字符串(python)

其中使用到的文本和大的文件请自行准备,然后替换测试代码中的目录哦

#coding=utf-8  
import hashlib                    

""" MD5加密算法,返回32位小写16进制符号 """                         
def md5hex(word):  
  if isinstance(word, unicode):  
    word = word.encode("utf-8")  
  elif not isinstance(word, str):  
    word = str(word)  
  m = hashlib.md5()  
  m.update(word)  
  return m.hexdigest() 

'''MD5加密文件'''   
def md5_file(name):
  m =hashlib.md5()
  a_file = open(name, 'rb') #需要使用二进制格式读取文件内容
  m.update(a_file.read())
  a_file.close()
  return m.hexdigest()

'''加密大的文件'''
def MD5ForBigFile(file):  
  m = hashlib.md5()  
  f = open(file, 'rb')  
  buffer = 8192    

  while 1:  
    chunk = f.read(buffer)  
    if not chunk : break  
    m.update(chunk)  

  f.close()  
  return m.hexdigest()  

strMD5=md5hex('abc')
fileMD5=md5_file('C:/Users/admin/Desktop/test.txt')
bigFileMD5=MD5ForBigFile('C:/adt.zip')
print('MD5: '+strMD5)
print('fileMD5: '+fileMD5)
print('bigFileMD5: '+bigFileMD5)

MD5原理

如果你还想看MD5原理的话,请继续往下看吧

MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。

第一步、填充

如果输入信息的长度(bit)对512求余的结果不等于448,就需要填充使得对512求余的结果等于448。填充的方法是填充一个1和n个0。填充完后,信息的长度就为N*512+448(bit);

第二步、记录信息长度

用64位来存储填充前信息长度。这64位加在第一步结果的后面,这样信息长度就变为N*512+448+64=(N+1)*512位。

第三步、装入标准的幻数&#

本文标签: 字符串原理文件