Class LuhnCheckDigit

java.lang.Object
org.apache.commons.validator.routines.checkdigit.ModulusCheckDigit
org.apache.commons.validator.routines.checkdigit.LuhnCheckDigit
All Implemented Interfaces:
Serializable, CheckDigit

public final class LuhnCheckDigit extends ModulusCheckDigit
Modulus 10 Luhn Check Digit calculation/validation. Luhn check digits are used, for example, by: Check digit calculation is based on modulus 10 with digits in an odd position (from right to left) being weighted 1 and even position digits being weighted 2 (weighted values greater than 9 have 9 subtracted).

See Wikipedia for more details.

Since:
Validator 1.4
Version:
$Revision: 1649191 $
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • LUHN_CHECK_DIGIT

      public static final CheckDigit LUHN_CHECK_DIGIT
      Singleton Luhn Check Digit instance
    • POSITION_WEIGHT

      private static final int[] POSITION_WEIGHT
      weighting given to digits depending on their right position
  • Constructor Details

    • LuhnCheckDigit

      public LuhnCheckDigit()
      Construct a modulus 10 Luhn Check Digit routine.
  • Method Details

    • weightedValue

      protected int weightedValue(int charValue, int leftPos, int rightPos)

      Calculates the weighted value of a charcter in the code at a specified position.

      For Luhn (from right to left) odd digits are weighted with a factor of one and even digits with a factor of two. Weighted values > 9, have 9 subtracted

      Specified by:
      weightedValue in class ModulusCheckDigit
      Parameters:
      charValue - The numeric value of the character.
      leftPos - The position of the character in the code, counting from left to right
      rightPos - The positionof the character in the code, counting from right to left
      Returns:
      The weighted value of the character.