A device for verifying a password entered, the device comprising: one or more hardware processors; a memory, storing instructions, which when executed, cause the one or more hardware processors to perform operations comprising: receiving a set of characters entered by a user as part of an access request procedure to access an access-controlled resource; characterized in that the operations performed further comprise: determining that no subset of the set of characters exactly matches a stored password; accessing a plurality of ordered vectors comprising ordered subsets of the stored password, the plurality of ordered vectors each having a length less than a length of the stored password; creating a plurality of check vectors based on the received set of characters, the plurality of check vectors each having a length corresponding to a length of an ordered vector of the plurality of ordered vectors, wherein each vector of the plurality of check vectors comprises a different ordered combination of the received set of characters in a same order; determining a set of distances between each respective vector of the plurality of check vectors and each of the plurality of ordered vectors; selecting a vector of the set of check vectors corresponding to a smallest distance of the set of distances; and causing access to the access-controlled resource to be granted to the user based on a comparison of a value corresponding to the selected vector and a threshold. one or more hardware processors; a memory, storing instructions, which when executed, cause the one or more hardware processors to perform operations comprising: receiving a set of characters entered by a user as part of an access request procedure to access an access-controlled resource; characterized in that the operations performed further comprise: determining that no subset of the set of characters exactly matches a stored password; accessing a plurality of ordered vectors comprising ordered subsets of the stored password, the plurality of ordered vectors each having a length less than a length of the stored password; creating a plurality of check vectors based on the received set of characters, the plurality of check vectors each having a length corresponding to a length of an ordered vector of the plurality of ordered vectors, wherein each vector of the plurality of check vectors comprises a different ordered combination of the received set of characters in a same order; determining a set of distances between each respective vector of the plurality of check vectors and each of the plurality of ordered vectors; selecting a vector of the set of check vectors corresponding to a smallest distance of the set of distances; and causing access to the access-controlled resource to be granted to the user based on a comparison of a value corresponding to the selected vector and a threshold. determining that no subset of the set of characters exactly matches a stored password; accessing a plurality of ordered vectors comprising ordered subsets of the stored password, the plurality of ordered vectors each having a length less than a length of the stored password; creating a plurality of check vectors based on the received set of characters, the plurality of check vectors each having a length corresponding to a length of an ordered vector of the plurality of ordered vectors, wherein each vector of the plurality of check vectors comprises a different ordered combination of the received set of characters in a same order; determining a set of distances between each respective vector of the plurality of check vectors and each of the plurality of ordered vectors; selecting a vector of the set of check vectors corresponding to a smallest distance of the set of distances; and causing access to the access-controlled resource to be granted to the user based on a comparison of a value corresponding to the selected vector and a threshold.