Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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算法的优雅之处在于其系统化的方法,用于确认身份代码的真实性。这个历史悠久的技术利用模数算术的威力创建校验和,经得起审查,实现了无缝的身份编码验证。

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)

## 爱心捐款

## 关注我