// This program graphs the output of a hashing function (e.g. MD5, produced // by changing one bit at a time in the input (using binary reflected Gray // code) and graphing the output to see if there are visible patterns. start = 0 end = 255 bits = 128 img = new image[128,end-start+1] ximg = new image[128,end-start] for y=start to end { num = messageDigestInt[char[binaryToGray[y]],"MD5"] for x=0 to bits-1 if getBit[num, x] == 0 img.setPixel[bits-x-1,y,0,0,0] else img.setPixel[bits-x-1,y,1,1,1] } img.show[] img.write["md5.png"] for y=start to end-1 { n1 = messageDigestInt[char[binaryToGray[y]],"MD5"] n2 = messageDigestInt[char[binaryToGray[y+1]],"MD5"] num = bitXor[n1,n2] for x=0 to bits-1 if getBit[num, x] == 0 ximg.setPixel[bits-x-1,y,0,0,0] else ximg.setPixel[bits-x-1,y,1,1,1] } ximg.show[] ximg.write["md5xor.png"]