0

Hi I'm having trouble with a certain part of my code right now. I'm writing a SHA 256 Hash function and I'm having an error with the message schedule. I don't really know how to approach this issue I basically created words 0-15 but I keep running into an error for words 16-64 I believe this is because they are strings, so I tried converting them into binary already but that ran into an issue of it's own which it would basically remove padded zero's since the binary say's that they are zero. Is there some way to fix this? here is the code below, with the error as well. Here is a screenshot of the error message

 #VARIABLES
        FF = (1 >> 32)-1
        #Right rotate
        def rr(a,b):
          ((a >> b) | (a << (32 - b))) & FF
        
        #List of constants which is represented by K
        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)
        
        h0 = 0x6a09e667
        h1 = 0xbb67ae85
        h2 = 0x3c6ef372
        h3 = 0xa54ff53a
        h4 = 0x510e527f
        h5 = 0x9b05688c
        h6 = 0x1f83d9ab
        h7 = 0x5be0cd19
        
        #Messages
        word_Hash = "1: Please write below what\n word you would like to hash."
        
        
        
        
        words = []
        playerinput = []
        varwords = [word_Hash]
        
        #FUNCTIONS
        count = 0
        
        
        
        def finish():
          global count, varwords, playerinput, words
          if count >= 1:
            screenframe1.pack_forget()
            frm_screen2.pack()
            #get input
            wordtohash = playerinput.pop(0)
            #convert to binary
            BinaryConversion = ''.join(format(ord(i), '08b') for i in wordtohash) + "1"
            #pad helped by Dr.Glynn, Maple
            if len(BinaryConversion) <= 512:
              count = len(BinaryConversion)
              while count <= 448:
                BinaryConversion = BinaryConversion + "0"
                count += 1
              wordtohash = len(wordtohash)
              endofpad = int(wordtohash) * 8
              
              numberofzeros = 0
              while numberofzeros < 63 - int(len(bin(endofpad)[2:])):
                BinaryConversion = BinaryConversion + "0"
                numberofzeros += 1
        
              #BinaryConversion = (BinaryConversion) +  str(endofpad)
        
              BinaryConversion = str(BinaryConversion) + str(bin(endofpad)[2:])
              numbers = len(BinaryConversion)
              #print(BinaryConversion)
               #first 16 messages
        
              w = [(BinaryConversion[0:31]), (BinaryConversion[32:63]), (BinaryConversion[64:95]), (BinaryConversion[96:127]),(BinaryConversion[128:159]),(BinaryConversion[160:191]),(BinaryConversion[192:223]),(BinaryConversion[224:255]),(BinaryConversion[256:287]), (BinaryConversion[288:319]),(BinaryConversion[320:351]),(BinaryConversion[352:383]),(BinaryConversion[384:415]),(BinaryConversion[416:447]),(BinaryConversion[448:479]),(BinaryConversion[480:511])]
           
              print(w)
              
              
              
              
              
              
              
            
            
              #Message Scedule
              #rest of the messages
        
              for i in range(16,64):
                S0 = rr(w[i-15], 7) ^ rr(w[i-15], 18)  ^ (w[i-15] >> 3)
        
                S1 = rr(w[i - 2], 17) ^ rr(w[i - 2], 19) ^ (w[i - 2] >> 10)
            enter code here**strong text**
                w[i] = (w[i - 16] + S0 + w[i-7] + S1) & FF
NemesisX
  • 1
  • 1

0 Answers0