Our watermark uses a much longer m-sequence, which is arranged row by row into a two-dimensional block. We append a 0 to the entire m-sequence, instead of using an extended m-sequence. Enough blocks are concatenated to cover the entire image. One advantage of a two-dimensional watermark is the ability to more effectively locate where an image has been changed. Forgeries made to only a small portion of the image would affect the respective block and not the entire row of the image. Our testing algorithm simply overlays the watermarked image block and the watermark block, computes an inner product, and compares the result to the ideal value. If the difference relative to the ideal value is larger than a defined threshold, the block fails the watermark test. This forgery detection algorithm eliminates the need to compute an entire crosscorrelation function. The details of this are described below.