C LANGUAGE TECHNOLOGY

【C言語】クレジットカード番号の認証で利用されるLuhnアルゴリズム

悩んでいる人

C言語でクレジットカード番号の認証で利用されるLuhnアルゴリズムを教えて!

こういった悩みにお答えします.

本記事の信頼性

  • リアルタイムシステムの研究歴12年.
  • 東大教員の時に,英語でOSの授業.
  • 2012年9月~2013年8月にアメリカのノースカロライナ大学チャペルヒル校コンピュータサイエンス学部2021年の世界大学学術ランキングで20位)で客員研究員として勤務.C言語でリアルタイムLinuxの研究開発
  • プログラミング歴15年以上,習得している言語: C/C++Solidity/Vyper,Java,Python,Ruby,HTML/CSS/JS/PHP,MATLAB,Assembler (x64,ARM).
  • 東大教員の時に,C++言語で開発した「LLVMコンパイラの拡張」,C言語で開発した独自のリアルタイムOS「Mcube Kernel」GitHubにオープンソースとして公開

こういった私から学べます.

クレジットカード番号の認証で利用されるLuhnアルゴリズム(Luhn mod 10アルゴリズム)

Luhn(ルーン)アルゴリズムは,ハンス・ピーター・ルーンにより開発された様々な識別番号の認証に使われている単純なチェックデジットのアルゴリズムです.

また,Luhnアルゴリズムは,10進数の整数を扱うため,Luhn mod 10アルゴリズムとも呼ばれています.

Luhnアルゴリズムは,以下の認証で利用されています.

  • クレジットカード番号
  • IMEI番号
  • National Provider Identifier(アメリカでの医療機関の識別番号)
  • カナダ社会保険番号(Social Insurance Number)

Luhnアルゴリズムの解説動画はこちらです.

Luhnアルゴリズムのコードは以下になります.

実行結果は以下になります.

以下のことが確認できています.

  • generate_check_character関数でinput_without_checkのチェックデジットが3であること
  • validate_check_character関数でinput(input_without_checkにチェックデジットの3を追加した配列)を入力した場合に返り値が1(真)になること

Luhn mod Nアルゴリズム

Luhn mod Nアルゴリズムは,Luhnアルゴリズム(Luhn mod 10アルゴリズム)を拡張して偶数の基数の値列を扱うことが可能なチェックデジットのアルゴリズムです.

Luhn mod Nアルゴリズムは,文字,文字と数字の組み合わせ,またはNを2で割り切れる任意のN文字の集合からなる識別文字列を検証するためにチェックデジットが必要な場合に便利です.

Luhn mod Nアルゴリズムのコードは以下になります.

実行結果は以下になります.

以下のことが確認できています.

  • generate_check_character関数でinput_without_checkのチェックデジットがeであること
  • validate_check_character関数でinput(input_without_checkにチェックデジットのeを追加した文字列)を入力した場合に返り値が1(真)になること

まとめ

C言語でクレジットカード番号の認証で利用されるLuhnアルゴリズム(Luhn mod 10アルゴリズム)を紹介しました.

また,Luhnアルゴリズムを拡張して偶数の基数の値列を扱うことが可能なLuhn mod Nアルゴリズムを解説しました.

他のチェックデジットアルゴリズムを知りたいあなたは以下の記事を読みましょう.

C言語を独学で習得することは難しいです.

私にC言語の無料相談をしたいあなたは,公式LINE「ChishiroのC言語」の友だち追加をお願い致します.

私のキャパシティもあり,一定数に達したら終了しますので,今すぐ追加しましょう!

友だち追加

独学が難しいあなたは,元東大教員がおすすめするC言語を学べるオンラインプログラミングスクール5社で自分に合うスクールを見つけましょう.後悔はさせません!

-C LANGUAGE, TECHNOLOGY
-, , ,