A user may submit an image and request from a server one or more images that are similar to the submitted image. The server may generate an image signature based on the content of the submitted image. The server may conduct a Hash operation to the image signature to generate one or more Hash values. These Hash values may be used to identify one or more candidate images similar to the image in a Hash table. These candidate images may be sorted and outputted to the user based on similarity. The similarity between each of the candidate images and the image may be determined using at least one of Hamming distance or Euclidean distance.