Advertisement
Guest User

Untitled

a guest
May 26th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.91 KB | None | 0 0
  1. text = input("Please Enter Text To Be Hashed:")
  2. def main(data):
  3. bytes = ""
  4.  
  5. h0 = 0x67452301
  6. h1 = 0xEFCDAB89
  7. h2 = 0x98BADCFE
  8. h3 = 0x10325476
  9. h4 = 0xC3D2E1F0
  10.  
  11.  
  12. for n in range(len(data)):
  13. bytes+='{0:08b}'.format(ord(data[n]))
  14. bits = bytes+"1"
  15. pBits = bits
  16.  
  17. #Pad Text To Equal 448 mod 512
  18. while len(pBits)%512 != 448:
  19. pBits+="0"
  20.  
  21. #Append The Original Length
  22. pBits+='{0:064b}'.format(len(bits)-1)
  23.  
  24. #Text is divided in 512 bit chunks
  25. def bits(l, n):
  26. return [l[i:i+n] for i in range(0, len(l), n)]
  27.  
  28. def bits1(n, b):
  29. return ((n << b) | (n >> (32 - b))) & 0xffffffff
  30.  
  31. for c in bits(pBits, 512):
  32. words = bits(c, 32)
  33. w = [0]*80
  34. for n in range(0, 16):
  35. w[n] = int(words[n], 2)
  36. for i in range(16, 80):
  37. w[i] = bits1((w[i-3] ^ w[i-8] ^ w[i-14] ^ w[i-16]), 1)
  38.  
  39. a = h0
  40. b = h1
  41. c = h2
  42. d = h3
  43. e = h4
  44.  
  45. #Hashing Process
  46. for i in range(0, 80):
  47. if 0 <= i <= 19:
  48. f = (b & c) | ((~b) & d)
  49. k = 0x5A827999
  50. elif 20 <= i <= 39:
  51. f = b ^ c ^ d
  52. k = 0x6ED9EBA1
  53. elif 40 <= i <= 59:
  54. f = (b & c) | (b & d) | (c & d)
  55. k = 0x8F1BBCDC
  56. elif 60 <= i <= 79:
  57. f = b ^ c ^ d
  58. k = 0xCA62C1D6
  59.  
  60. temp = bits1(a, 5) + f + e + k + w[i] & 0xffffffff
  61. e = d
  62. d = c
  63. c = bits1(b, 30)
  64. b = a
  65. a = temp
  66.  
  67. h0 = h0 + a & 0xffffffff
  68. h1 = h1 + b & 0xffffffff
  69. h2 = h2 + c & 0xffffffff
  70. h3 = h3 + d & 0xffffffff
  71. h4 = h4 + e & 0xffffffff
  72.  
  73.  
  74.  
  75. return '%08x%08x%08x%08x%08x' % (h0, h1, h2, h3, h4)
  76.  
  77. print (main(text))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement