code: def digest(self):
          
  
          H0 = self.H0
          H1 = self.H1
          H2 = self.H2
          H3 = self.H3
          H4 = self.H4
          input = [] + self.input
          count = [] + self.count
  
          index = (self.count[1] >> 3) & 0x3f
  
          if index < 56:
              padLen = 56 - index
          else:
              padLen = 120 - index
  
          padding = ['\200'] + ['\000'] * 63
          self.update(padding[:padLen])
  
          # Append length (before padding).
          bits = _bytelist2longBigEndian(self.input[:56]) + count
  
          self._transform(bits)
  
          # Store state in digest.
          digest = _long2bytesBigEndian(self.H0, 4) + \
                   _long2bytesBigEndian(self.H1, 4) + \
                   _long2bytesBigEndian(self.H2, 4) + \
                   _long2bytesBigEndian(self.H3, 4) + \
                   _long2bytesBigEndian(self.H4, 4)
  
          self.H0 = H0
          self.H1 = H1
          self.H2 = H2
          self.H3 = H3
          self.H4 = H4
          self.input = input
          self.count = count
  
          return digest
docs: Terminate the message-digest computation and return digest.
  
          Return the digest of the strings passed to the update()
          method so far. This is a 16-byte string which may contain
          non-ASCII characters, including null bytes.