mirror of
https://github.com/TheAlgorithms/Python.git
synced 2025-03-19 21:19:47 +00:00
Merge pull request #294 from TheAlgorithms/documented_md5_hash
Documented md5 hash
This commit is contained in:
commit
dbfc220264
@ -2,6 +2,19 @@ from __future__ import print_function
|
||||
import math
|
||||
|
||||
def rearrange(bitString32):
|
||||
"""[summary]
|
||||
Regroups the given binary string.
|
||||
|
||||
Arguments:
|
||||
bitString32 {[string]} -- [32 bit binary]
|
||||
|
||||
Raises:
|
||||
ValueError -- [if the given string not are 32 bit binary string]
|
||||
|
||||
Returns:
|
||||
[string] -- [32 bit binary string]
|
||||
"""
|
||||
|
||||
if len(bitString32) != 32:
|
||||
raise ValueError("Need length 32")
|
||||
newString = ""
|
||||
@ -10,6 +23,13 @@ def rearrange(bitString32):
|
||||
return newString
|
||||
|
||||
def reformatHex(i):
|
||||
"""[summary]
|
||||
Converts the given integer into 8-digit hex number.
|
||||
|
||||
Arguments:
|
||||
i {[int]} -- [integer]
|
||||
"""
|
||||
|
||||
hexrep = format(i,'08x')
|
||||
thing = ""
|
||||
for i in [3,2,1,0]:
|
||||
@ -17,6 +37,16 @@ def reformatHex(i):
|
||||
return thing
|
||||
|
||||
def pad(bitString):
|
||||
"""[summary]
|
||||
Fills up the binary string to a 512 bit binary string
|
||||
|
||||
Arguments:
|
||||
bitString {[string]} -- [binary string]
|
||||
|
||||
Returns:
|
||||
[string] -- [binary string]
|
||||
"""
|
||||
|
||||
startLength = len(bitString)
|
||||
bitString += '1'
|
||||
while len(bitString) % 512 != 448:
|
||||
@ -26,6 +56,15 @@ def pad(bitString):
|
||||
return bitString
|
||||
|
||||
def getBlock(bitString):
|
||||
"""[summary]
|
||||
Iterator:
|
||||
Returns by each call a list of length 16 with the 32 bit
|
||||
integer blocks.
|
||||
|
||||
Arguments:
|
||||
bitString {[string]} -- [binary string >= 512]
|
||||
"""
|
||||
|
||||
currPos = 0
|
||||
while currPos < len(bitString):
|
||||
currPart = bitString[currPos:currPos+512]
|
||||
@ -34,6 +73,7 @@ def getBlock(bitString):
|
||||
mySplits.append(int(rearrange(currPart[32*i:32*i+32]),2))
|
||||
yield mySplits
|
||||
currPos += 512
|
||||
|
||||
def not32(i):
|
||||
i_str = format(i,'032b')
|
||||
new_str = ''
|
||||
@ -48,6 +88,13 @@ def leftrot32(i,s):
|
||||
return (i << s) ^ (i >> (32-s))
|
||||
|
||||
def md5me(testString):
|
||||
"""[summary]
|
||||
Returns a 32-bit hash code of the string 'testString'
|
||||
|
||||
Arguments:
|
||||
testString {[string]} -- [message]
|
||||
"""
|
||||
|
||||
bs =''
|
||||
for i in testString:
|
||||
bs += format(ord(i),'08b')
|
||||
|
Loading…
x
Reference in New Issue
Block a user