Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def right_rotate(data, d):
- first = data[:len(data)-d]
- second = data[len(data)-d:]
- full = second + first
- return full
- def addition32(bad_add):
- length = len(bad_add)
- if length > 32:
- ll = length-32
- good_add = bad_add[ll:]
- good_add = f'{int(good_add, 2):032b}'
- return good_add
- if length == 32:
- return bad_add
- def sha_256():
- input_data = input('Scrivete qualcosa:')
- data_bin = ''.join(format(ord(item), '08b') for item in input_data)
- len_data = int(len(data_bin))
- data_bin = data_bin+'1'
- len_data_bin = f'{len_data:08b}'
- constant_512 = 512
- len_len_data_bin = int(len(len_data_bin))
- updated_constant = constant_512-len_data-len_len_data_bin-1
- updated_to_512_data = data_bin + '0' * updated_constant+len_data_bin
- h0 = 0x6a09e667
- h1 = 0xbb67ae85
- h2 = 0x3c6ef372
- h3 = 0xa54ff53a
- h4 = 0x510e527f
- h5 = 0x9b05688c
- h6 = 0x1f83d9ab
- h7 = 0x5be0cd19
- k = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
- 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
- 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
- 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
- 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
- 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
- 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
- 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2]
- w = []
- n = 32
- for item in range(0, len(updated_to_512_data), n):
- w.append(str(updated_to_512_data)[item: item + n])
- for w_add_zero in range(16, 64):
- zero_32 = f"{int('0', 2):032b}"
- w.insert(w_add_zero, zero_32)
- for i in range(16, 64):
- i_15 = i-15
- wi_15 = w[i_15]
- wi_15_7 = right_rotate(wi_15, 7)
- wi_15_18 = right_rotate(wi_15, 18)
- wi_15_3 = '{:032b}'.format(int(wi_15, 2) >> 3)
- wi_15_7 = f'{int(wi_15_7, 2):032b}'
- wi_15_18 = f'{int(wi_15_18, 2):032b}'
- s0 = f'{int(wi_15_7, 2) ^ int(wi_15_18, 2) ^ int(wi_15_3, 2):032b}'
- i_2 = i-2
- wi_2 = w[i_2]
- wi_2_17 = right_rotate(wi_2, 17)
- wi_2_19 = right_rotate(wi_2, 19)
- wi_2_10 = '{:032b}'.format(int(wi_2, 2) >> 10)
- wi_2_17 = f'{int(wi_2_17, 2):032b}'
- wi_2_19 = f'{int(wi_2_19, 2):032b}'
- s1 = f'{int(wi_2_17, 2) ^ int(wi_2_19, 2) ^ int(wi_2_10, 2):032b}'
- i_16 = i-16
- i_7 = i-7
- w_16 = f'{int(w[i_16], 2) + int(s0, 2) + int(w[i_7], 2) + int(s1, 2):032b}'
- w[i] = addition32(w_16)
- a = f'{h0:032b}'
- b = f'{h1:032b}'
- c = f'{h2:032b}'
- d = f'{h3:032b}'
- e = f'{h4:032b}'
- f = f'{h5:032b}'
- g = f'{h6:032b}'
- h = f'{h7:032b}'
- for x in range(0, 64):
- e_6 = f'{int(right_rotate(e, 6), 2):032b}'
- e_11 = f'{int(right_rotate(e, 11), 2):032b}'
- e_25 = f'{int(right_rotate(e, 25), 2):032b}'
- s1_1 = f'{int(e_6, 2) ^ int(e_11, 2) ^ int(e_25, 2):032b}'
- e_f = f'{int(e, 2) & int(f, 2):032b}'
- ne = ''.join(['1' if inverse == '0' else '0' for inverse in e])
- ne_g = f'{int(ne, 2) & int(g, 2):032b}'
- ch = f'{int(e_f, 2) ^ int(ne_g, 2):032b}'
- kx = f'{k[x]:032b}'
- temp_1 = f'{int(h, 2) + int(s1_1, 2) + int(ch, 2) + int(kx, 2) + int(w[x], 2):032b}'
- temp_1 = addition32(temp_1)
- a_2 = f'{int(right_rotate(a, 2), 2):032b}'
- a_13 = f'{int(right_rotate(a, 13), 2):032b}'
- a_22 = f'{int(right_rotate(a, 22), 2):032b}'
- s0_1 = f'{int(a_2, 2) ^ int(a_13, 2) ^ int(a_22, 2):032b}'
- a_b = f'{int(a, 2) & int(b, 2):032b}'
- a_c = f'{int(a, 2) & int(c, 2):032b}'
- b_c = f'{int(b, 2) & int(c, 2):032b}'
- maj = f'{int(a_b, 2) ^ int(a_c, 2) ^ int(b_c, 2):032b}'
- temp_2 = f'{int(s0_1, 2) + int(maj, 2):032b}'
- temp_2 = addition32(temp_2)
- h = f'{int(g, 2):032b}'
- g = f'{int(f, 2):032b}'
- f = f'{int(e, 2):032b}'
- e = f'{int(d, 2) + int(temp_1, 2):032b}'
- e = addition32(e)
- d = f'{int(c, 2):032b}'
- c = f'{int(b, 2):032b}'
- b = f'{int(a, 2):032b}'
- a = f'{int(temp_1, 2) + int(temp_2, 2):032b}'
- a = addition32(a)
- h0 = f'{h0 + int(a, 2):032b}'
- h1 = f'{h1 + int(b, 2):032b}'
- h2 = f'{h2 + int(c, 2):032b}'
- h3 = f'{h3 + int(d, 2):032b}'
- h4 = f'{h4 + int(e, 2):032b}'
- h5 = f'{h5 + int(f, 2):032b}'
- h6 = f'{h6 + int(g, 2):032b}'
- h7 = f'{h7 + int(h, 2):032b}'
- h0 = addition32(h0)
- h1 = addition32(h1)
- h2 = addition32(h2)
- h3 = addition32(h3)
- h4 = addition32(h4)
- h5 = addition32(h5)
- h6 = addition32(h6)
- h7 = addition32(h7)
- digest = str(h0) + str(h1) + str(h2) + str(h3) + str(h4) + str(h5) + str(h6) + str(h7)
- digest = f'{int(digest, 2):x}'
- print(digest)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement