code: def grind_hash_for_colors(hashcode):
      
  
      # When using smaller hash algorithms like MD5 or SHA1,
      # the number of bits does not provide enough information
      # to generate unique colors. Instead the hash is internally
      # appended by itself to fit the MINIMUM_HASH_LEN.
      # This leads to smaller hashes displaying less color
      # variatons, depicting the insecurity of small hashes.
      while (len(hashcode) < MINIMUM_HASH_LEN):
          chardiff = diff(len(hashcode), MINIMUM_HASH_LEN)
          if DEBUG:
              print ("Hashcode: %r with length: %d is too small. Appending difference." % (hashcode, len(hashcode)))
          hashcode += hashcode[:chardiff]
          if DEBUG:
              print ("Hash is now: %r with length: %d" % (hashcode, len(hashcode)))
  
      hashparts = split_sequence(hashcode, HEX_COLOR_LEN)
  
      colors = []
  
      for i in range(COLOR_QUANTITY):
          colors.append(hex2rgb(hashparts[i]))
      if DEBUG:
          print ("Generated colors: %r" % colors)
      return colors
docs: Extracts information from the hashcode
      to generate different colors. Returns a
      list of colors in (r,g,b) tupels.