使用Java中的Luhn算法实现信用卡验证 – Java2Blog

Luhn 算法(也称为 模数10 或 mod 10 算法)是一种简单的校验和过程,用于验证各种标识号,例如信用卡号,加拿大社会保险号。此算法旨在保护再次输入错误或意外的错误,而不是恶意攻击。大多数信用卡公司都采用此算法,因为该算法可在公共领域使用,并且任何人都可以使用。

以下是Luhn算法中涉及的步骤。

步骤1 :从最右边的数字开始,我们应该每隔一个数字加倍。 使用Java中的Luhn算法实现信用卡验证 - Java2Blog

第2 步:当我们将数字加倍并获得两位数的乘积时,则应添加乘积的数字。 使用Java中的Luhn算法实现信用卡验证 - Java2Blog

步骤3 :计算所有数字的总和。 使用Java中的Luhn算法实现信用卡验证 - Java2Blog

步骤4 :如果总和可以除以10,即总和模10为0,则数字有效,否则无效。 使用Java中的Luhn算法实现信用卡验证 - Java2Blog

由于 90 mod 10 为0 ,因此这是有效的信用卡号。

<b>public</b> <b>class</b> LuhnAlgorithmMain {
 
    <b>public</b> <b>static</b> <b>void</b> main(String[] args) {
        
        String cardNumber=<font>"1358954993914435"</font><font>;
        
        <b>boolean</b> validCreditCardNumber = isValidCreditCardNumber(cardNumber);
        
        <b>if</b>(validCreditCardNumber)
        {
            System.out.println(cardNumber+</font><font>" is valid as per luhn algorithm"</font><font>);
        }
        <b>else</b>
        {
            System.out.println(cardNumber+</font><font>" is not valid as per luhn algorithm"</font><font>);
        }
    }
    
    <b>public</b> <b>static</b> <b>boolean</b> isValidCreditCardNumber(String cardNumber)
    {
        </font><font><i>// int array for processing the cardNumber</i></font><font>
        <b>int</b>[] cardIntArray=<b>new</b> <b>int</b>[cardNumber.length()];
        
        <b>for</b>(<b>int</b> i=0;i<cardNumber.length();i++)
        {
            <b>char</b> c= cardNumber.<b>char</b>At(i);
            cardIntArray[i]=  Integer.parseInt(</font><font>""</font><font>+c);
        }
        
        
        <b>for</b>(<b>int</b> i=cardIntArray.length-2;i>=0;i=i-2)
        {
            <b>int</b> num = cardIntArray[i];
            num = num * 2;  </font><font><i>// step 1</i></font><font>
            <b>if</b>(num>9)
            {
                num = num%10 + num/10;  </font><font><i>// step 2</i></font><font>
            }
            cardIntArray[i]=num;
        }
        
        <b>int</b> sum = sumDigits(cardIntArray);  </font><font><i>// step 3</i></font><font>
        
        System.out.println(sum);
          
        <b>if</b>(sum%10==0)  </font><font><i>// step 4</i></font><font>
        {
            <b>return</b> <b>true</b>;
        }
        
        <b>return</b> false;
        
    }
    
    <b>public</b> <b>static</b> <b>int</b> sumDigits(<b>int</b>[] arr)
    {
        <b>return</b> Arrays.stream(arr).sum();
    }
}
</font>

原文 

https://www.jdon.com/54036

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 使用Java中的Luhn算法实现信用卡验证 – Java2Blog

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址