Does the server have to multiply the whole 8G block by the encrypted query? If not, wouldn't the server know which block the query was for?
Why return a full row? Wouldn't that leak the hashes of an entire row to every client? Why not set the encrypted query to return just if the password is there or not?