Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ctkqiang/luhnalgorithm
Luhn算法,也被称为Mod 10算法,是数据完整性验证领域的一个重要基石。它主要用于验证各种身份编码,如信用卡号码、IMEI码,甚至包括加拿大社会保险号码,其重要性超越了其简单性。 Luhn算法的优雅之处在于其系统化的方法,用于确认身份代码的真实性。这个历史悠久的技术利用模数算术的威力创建校验和,经得起审查,实现了无缝的身份编码验证。
https://github.com/ctkqiang/luhnalgorithm
card credit-card erlang johnmelodyme luhn-algorithm
Last synced: about 1 month ago
JSON representation
Luhn算法,也被称为Mod 10算法,是数据完整性验证领域的一个重要基石。它主要用于验证各种身份编码,如信用卡号码、IMEI码,甚至包括加拿大社会保险号码,其重要性超越了其简单性。 Luhn算法的优雅之处在于其系统化的方法,用于确认身份代码的真实性。这个历史悠久的技术利用模数算术的威力创建校验和,经得起审查,实现了无缝的身份编码验证。
- Host: GitHub
- URL: https://github.com/ctkqiang/luhnalgorithm
- Owner: ctkqiang
- License: apache-2.0
- Created: 2021-05-28T15:35:43.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-06-04T03:47:19.000Z (8 months ago)
- Last Synced: 2024-06-04T04:44:53.603Z (8 months ago)
- Topics: card, credit-card, erlang, johnmelodyme, luhn-algorithm
- Language: Erlang
- Homepage:
- Size: 38.1 KB
- Stars: 2
- Watchers: 1
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.md
- License: LICENSE
Awesome Lists containing this project
README
# Luhn算法:加强身份验证的数据安全
Luhn算法,也被称为Mod 10算法,是数据完整性验证领域的一个重要基石。它主要用于验证各种身份编码,如信用卡号码、IMEI码,甚至包括加拿大社会保险号码,其重要性超越了其简单性。
Luhn算法的优雅之处在于其系统化的方法,用于确认身份代码的真实性。这个历史悠久的技术利用模数算术的威力创建校验和,经得起审查,实现了无缝的身份编码验证。
## 解析公式
让我们通过一个假想的借记卡/信用卡号码示例 ```4716 2495 3356 7731``` 来深入了解这个算法的内部运作。过程从将卡号分割成数组开始,然后将数组中偶数索引位置的每个数字加倍。
随后,算法通过对加倍值的各个数字进行求和来继续进行。值得注意的是,如果任何一个加倍的数字超过了9,只需简单地减去9,即可确保校验和的准确性。
下一步涉及对数组中未被操作的数字进行求和 - 即位于奇数索引位置的数字。将偶数索引位置的数字的总和与奇数索引位置的数字的总和相结合,得到一个累积值。
就在这时,Luhn算法的独创性浮出水面。如果总和可以被10整除,验证就是成功的,确认了身份编码的有效性。
**Mod 10魔法的复杂性**
除了其数学精度,Luhn算法还流露出一种优雅和实用。在一个越来越依赖安全身份机制的世界中,这个算法是一个哨兵,确保各种应用中的身份编码的完整性。
在支付系统、电信网络和官方文件中,Luhn算法代表了数学与技术进步之间的协同作用。在我们继续航行数据安全至上的时代时,Luhn算法仍然是一个坚定的伙伴,保障着我们最关键身份编码的真实性。
| 4 | 7 | 1 | 6 | 2 | 4 | 9 | 5 | 3 | 3 | 5 | 6 | 7 | 7 | 3 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| | 14 | | 12 | | 8 | | 10 | | 6 | | 12 | | 14 | | 0 |其次,如果双精度值大于9,则将这些数字分开
到数组中,并得到两者的和。| 4 | 7 | 1 | 6 | 2 | 4 | 9 | 5 | 3 | 3 | 5 | 6 | 7 | 7 | 3 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| | 14 | | 12 | | 8 | | 10 | | 6 | | 12 | | 14 | | |
| | 5 | | 3 | | | | 1 | | | | 3 | | 5 | | |现在将9之前的值覆盖到现有卡号,
```latex
4 + 7 + 1 + 6 + 2 + 8 + 9 + 5 + 3 + 6 + 5 + 6 + 7 + 7 + 3 + 0 = 79
\newline
\therefore 此卡无效::不是10的倍数
```# 编译和运行指南
这是一个简短的指南,说明如何编译和运行 Erlang 模块 `luhn`。
## 编译步骤
1. 将 `luhn.erl` 文件保存到本地计算机。
2. 打开终端或命令提示符。
3. 使用 `cd` 命令导航到包含 `luhn.erl` 文件的目录。
4. 在终端中输入 `erl` 并按 Enter 键启动 Erlang shell。
5. 在 Erlang shell 中,输入以下命令来编译 `luhn.erl` 文件:```erlang
c(luhn).
```## 运行示例
编译完成后,您可以通过以下步骤运行示例:
1. 在 Erlang shell 中调用 `start/1` 函数,并传入卡号作为参数。
```erlang
luhn:start("1234567890").
```请将 `"1234567890"` 替换为您要检查的实际卡号。
## 注意事项
- 确保在您的系统上安装了 Erlang。
- 在编译和运行模块时,请使用正确的文件路径和文件名。
- 您可以根据需要调用其他函数,或者在模块中添加自定义功能。### 个人捐赠支持
如果您认为该项目对您有所帮助,并且愿意个人捐赠以支持其持续发展和维护,🥰我非常感激您的慷慨。
您的捐赠将帮助我继续改进和添加新功能到该项目中。 通过财务捐赠,您将有助于确保该项目保持免
费和对所有人开放。即使是一小笔捐款也能产生巨大的影响,也是对我个人的鼓励。以下是我的支付宝二维码,您可以扫描二维码进行个人捐赠:
![]()
![]()
[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/F1F5VCZJU)