1. 程式人生 > >PHP中使用Luhn演算法校驗信用卡及借記卡卡號

PHP中使用Luhn演算法校驗信用卡及借記卡卡號

Luhn演算法會通過校驗碼對一串數字進行驗證,校驗碼通常會被加到這串數字的末尾處,從而得到一個完整的身份識別碼。

我們以數字“7992739871”為例,計算其校驗位:

  • 從校驗位開始,從右往左,偶數位乘2(例如,7*2=14),然後將兩位數字的個位與十位相加(例如,10:1+0=1,14:1+4=5);
  • 把得到的數字加在一起(本例中得到67);
  • 將數字的和取模10(本例中得到7),再用10去減(本例中得到3),得到校驗位。

這裡寫圖片描述
另一種方法是:

  • 從校驗位開始,從右往左,偶數位乘2,然後將兩位數字的個位與十位相加;
  • 計算所有數字的和(67);
  • 乘以9(603);
  • 取其個位數字(3),得到校驗位。
  • 使用PHP實現該演算法(第一種):
/**
 * PHP實現Luhn演算法(方式一)
 * @author:http://nonfu.me
 */
$no = '7432810010473523';
$arr_no = str_split($no);
$last_n = $arr_no[count($arr_no)-1];
krsort($arr_no);
$i = 1;
$total = 0;
foreach ($arr_no as $n){
    if($i%2==0){
        $ix = $n*2;
        if($ix>=10){
            $nx = 1 + ($ix
% 10); $total += $nx; }else{ $total += $ix; } }else{ $total += $n; } $i++; } $total -= $last_n; $x = 10 - ($total % 10); if($x == $last_n){ echo '符合Luhn演算法'; }

另一種演算法的PHP實現:

/**
 * PHP實現Luhn演算法(方式二)
 * @author:http://nonfu.me
 */
$no = '6228480402564890018'
; $arr_no = str_split($no); $last_n = $arr_no[count($arr_no)-1]; krsort($arr_no); $i = 1; $total = 0; foreach ($arr_no as $n){ if($i%2==0){ $ix = $n*2; if($ix>=10){ $nx = 1 + ($ix % 10); $total += $nx; }else{ $total += $ix; } }else{ $total += $n; } $i++; } $total -= $last_n; $total *= 9; if($last_n == ($total%10)){ echo '符合Luhn演算法'; }

經檢測,能夠校驗16位或19位銀行卡卡號。

相關推薦

PHP使用Luhn演算法信用卡借記卡

Luhn演算法會通過校驗碼對一串數字進行驗證,校驗碼通常會被加到這串數字的末尾處,從而得到一個完整的身份識別碼。 我們以數字“7992739871”為例,計算其校驗位: 從校驗位開始,從右往左,偶數位乘2(例如,7*2=14),然後將兩位數字的個位與十位相

Luhn演算法 C#實現 信用卡

public static bool IsValidCreditCard(string cardNumber)         {             if(cardNumber.Length!=16)             {                 thr

CRC的原理硬體、軟體演算法實現

轉自:http://blog.163.com/yucheng_xiao/blog/static/76600192201393092918776/  一、基本原理     CRC檢驗原理實際上就是在一個p位二進位制資料序列之後附加一個r位二進位制檢驗碼(序列),從而構成一個總長為n=p+r位的二進位制序

phpsession和cookie的使用區別

網上商城 標識 禁止 bsp 身份驗證 main str 什麽 ets 1.cookie的使用 什麽是 Cookie? cookie 常用於識別用戶。cookie 是服務器留在用戶計算機中的小文件。每當相同的計算機通過瀏覽器請求頁面時,它同時會發送 cookie。通過

Jquery Validate 默認規則常用的自定義驗證規則

字符 eth ber exp string amp 手機 zip 子郵件 Jquery Validate 相關參數及常用的自定義驗證規則 一、官網地址:http://bassistance.de/jquery-plugins/jquery-plugin-validatio

php前端做過濾

spec 實體 空格 如果 request 避免 input sla span http://www./test_form.php/%22%3E%3Cscript%3Ealert(‘hacked‘)%3C/script%3E 以上的 URL 中,將被解析為如下代碼並執行:

Confluence 6 從你的 JDBC 連接直接啟用查詢

Confluence確定 Confluence 在數據庫連接池中校驗數據庫連接:停止 Confluence。編輯 <home-directory>confluence.cfg.xml 文件。針對你特定的數據庫,插入下面屬性配置信息。針對 PostgreSQL,SQL Server,和 MySQL&

ASP.NET全棧開發之在Vue使用前端幸運飛艇平臺出租(二)

ati fun 之間 成功 全棧 uml scrip UNC email 在全棧開發系列第三篇的時候有講到使用Vue進行前端驗證幸運飛艇平臺出租QQ2952777280【話仙源碼論壇】hxforum.com【木瓜源碼論壇】papayabbs.com。在那一篇博文裏,詳細講了

CRC原理步驟

ext 是把 nsf 其它 結果 aci 發送 二進制 padding 什麽是CRC校驗? CRC即循環冗余校驗碼:是數據通信領域中最常用的一種查錯校驗碼,其特征是信息字段和校驗字段的長度可以任意選定。循環冗余檢查(CRC)是一種數據傳輸檢錯功能,對數據進行多項式計算,並將

Android驅動的remap_pfn_range()漏洞(CVE-2013-2596)

用戶態 bsp 介紹 進程 sig shared res exploit 關系 簡單介紹 當然類似函數還有io_remap_pfn_range()。 remap_pfn_range() 為用戶態提供了一種手段訪問內核地址空間。它通過新頁表,將一塊內核物理內存映射到用戶態進程

javaBean,validate

1、bean中寫法: /** 標題 */ @Length(max = 30, message = "只允許輸入30個字") @NotBlank(message = "請輸入標題") private String name; /** 獎勵額度 */ @Digits(integer

Java應用的資料

翻譯:吳嘉俊 ,叩丁狼高階講師。   [譯者注:這篇文章是開源專案CUBA Platform的作者,在這篇文章中,作者闡述了CUBA平臺中關於資料校驗的設計思想和使用方式,可以作為大家在設計資料校驗方面一個比較好的參考。] 我接觸到的很多專案中,對資料校驗這方面內容都

PHPcurl模擬post上傳接收檔案

public function Action_Upload(){ $this->path_config(); exit(); $furl="@d:\develop\JMFrameworkWithDemo.rar"; $url= "http://localh

CRC原理步驟(轉載只是為了查閱方便,若侵權立刪)

什麼是CRC校驗? CRC即迴圈冗餘校驗碼:是資料通訊領域中最常用的一種查錯校驗碼,其特徵是資訊欄位和校驗欄位的長度可以任意選定。迴圈冗餘檢查(CRC)是一種資料傳輸檢錯功能,對資料進行多項式計算,並將得到的結果附在幀的後面,接收裝置也執行類似的演算法,以保證資料傳輸的正確性和完整性。 &n

php 微信 token失敗 解決方法

<?php namespace app\user\controller; use think\Controller; use think\Session; use think\Db; use think\Request; //微信訊息接收 class Wx

PHPsession和cookie的用法區別

一,session 1.session 是啥? 2.怎麼儲存的? 3.如何執行? 4.有生命週期嗎? 5.關閉瀏覽器會過期嗎? 6.Redis代替檔案儲存session 7.分散式session的同步問題     session是啥?

PHPecho(),print(),print_r()的區別列印函式

1 echo()   可以同時輸出多個字串,可以多個引數,並不需要圓括號,無返回值。 2 print()  只可以同時輸出一個字串,一個引數,需要圓括號,有返回值,當其執行失敗時返flase .print  的用法和C語言很像,所以會對輸出內容裡的%做特殊解釋。3 die();    有兩個功能:先輸出內容

在Linux系統使用md5sum資料一致性的耗時驗證與分析

我們在Linux系統中校驗檔案一致性時,通常使用md5sum命令來生成檔案的MD5碼,下面先介紹下MD5: MD5演算法常常被用來驗證網路檔案傳輸的完整性,防止檔案被人篡改。MD5 全稱是報文摘要演算法(Message-Digest Algorithm 5),此演算法對任意長度的資訊逐位進行計算,產

【SpringMVC學習06】SpringMVC的資料

  這一篇博文主要總結一下springmvc中對資料的校驗。在實際中,通常使用較多是前端的校驗,比如頁面中js校驗,對於安全要求較高的建議在服務端也要進行校驗。服務端校驗可以是在控制層conroller

MB訊息集功能實現例子

下載文件到電腦,查詢使用更方便 1下載券  36人已下載 下載 還剩7頁未讀,繼續閱讀 定製HR最喜歡的簡歷 我要定製簡歷 雙擊“ MappingtoQ42 ” : 5. 釋出訊息流 打包