https://github.com/shinji-san/luhndotnet
An C# implementation of the Luhn algorithm
https://github.com/shinji-san/luhndotnet
charp check-digit-formula dotnet luhn luhn-algorithm mod-10-algorithm modulus-10-algorithm
Last synced: about 1 year ago
JSON representation
An C# implementation of the Luhn algorithm
- Host: GitHub
- URL: https://github.com/shinji-san/luhndotnet
- Owner: shinji-san
- License: mit
- Created: 2022-06-03T22:44:26.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2025-03-17T12:46:03.000Z (about 1 year ago)
- Last Synced: 2025-04-09T00:22:51.046Z (about 1 year ago)
- Topics: charp, check-digit-formula, dotnet, luhn, luhn-algorithm, mod-10-algorithm, modulus-10-algorithm
- Language: C#
- Homepage:
- Size: 1.94 MB
- Stars: 2
- Watchers: 1
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
# LuhnDotNet

A C# implementation of the Luhn algorithm.
The Luhn algorithm is a checksum formula used to validate identification numbers like credit card numbers. It works by doubling every second digit from the right, summing all the digits, and checking if the total is a multiple of 10. It's widely used and is specified in ISO/IEC 7812-1.
# Build & Test Status Of Default Branch
Status
Solution
Project Format
.NET Version
LuhnDotNet.sln
SDK
Standard 2.0
Standard 2.1
FX 4.6.2
FX 4.7
FX 4.7.1
FX 4.7.2
FX 4.8
.NET 8
.NET 9
# NuGet
## Supported Target Frameworks
Build And Test Status
NuGet Version
Git Tag
Target Frameworks
.NET 8
.NET 9
Standard 2.0
Standard 2.1
FX 4.6.2
FX 4.7
FX 4.7.1
FX 4.7.2
FX 4.8
## Install LuhnDotNet package
1. Open a console and switch to the directory, containing your project file.
2. Use the following command to install version 1.3.0 of the LuhnDotNet package:
```dotnetcli
dotnet add package LuhnDotNet -v 1.3.0 -f
```
3. After the completion of the command, look at the project file to make sure that the package is successfully installed.
You can open the `.csproj` file to see the added package reference:
```xml
```
## Remove LuhnDotNet package
1. Open a console and switch to the directory, containing your project file.
2. Use the following command to remove the LuhnDotNet package:
```dotnetcli
dotnet remove package LuhnDotNet
```
3. After the completion of the command, look at the project file to make sure that the package is successfuly removed.
You can open the `.csproj` file to check the deleted package reference.
# API Documentation
You can find the API documentation [here](https://sebastian-walther.de/LuhnDotNet/api/LuhnDotNet.html).
# Usage
## Compute the Luhn check digit
```csharp
using System;
using System.Collections.Generic;
using LuhnDotNet;
namespace Example1
{
public class Program
{
public static void Main(string[] args)
{
var checkDigit = "37828224631000".ComputeLuhnCheckDigit();
//// Must be 5
Console.WriteLine(checkDigit);
}
}
}
```
## Compute the Luhn number
```csharp
using System;
using System.Collections.Generic;
using LuhnDotNet;
namespace Example2
{
public class Program
{
public static void Main(string[] args)
{
var luhnNumber = "37828224631000".ComputeLuhnNumber();
//// Must be 378282246310005
Console.WriteLine(luhnNumber);
}
}
}
```
## Validate Luhn number
```csharp
using System;
using System.Collections.Generic;
using LuhnDotNet;
namespace Example3
{
public class Program
{
public static void Main(string[] args)
{
var isValid = "378282246310005".IsValidLuhnNumber();
//// Must be 'true'
Console.WriteLine(isValid);
}
}
}
```
## Validate number and corresponding Luhn check digit
```csharp
using System;
using System.Collections.Generic;
using LuhnDotNet;
namespace Example4
{
public class Program
{
public static void Main(string[] args)
{
byte checkDigit = 5;
var isValid = checkDigit.IsValidLuhnCheckDigit("37828224631000");
//// Must be 'true'
Console.WriteLine(isValid);
}
}
}
```
## Validate ISIN with LuhnDotNet and ConvertAlphaNumericToNumeric
The `LuhnDotNet` library can be used in combination with the `ConvertAlphaNumericToNumeric` method to validate an International Securities Identification Number (ISIN). An ISIN uniquely identifies a security, such as stocks, bonds or derivatives. It is a 12-character alphanumeric code.
The `ConvertAlphaNumericToNumeric` method is used to convert the alphanumeric ISIN to a numeric string, where each letter in the input string is replaced by its decimal ASCII value minus 55. This numeric string can then be validated using the `Luhn.IsValid` method.
Here is an example of how to use these methods to validate an ISIN:
```csharp
using System;
using LuhnDotNet;
namespace Example5
{
public class Program
{
public static void Main(string[] args)
{
string isin = "US0378331005";
bool isValid = isin.ConvertAlphaNumericToNumeric().IsValidLuhnNumber();
Console.WriteLine($"The ISIN {isin} is valid: {isValid}");
}
}
}
```
## Compute ISIN Check Digit with LuhnDotNet and ConvertAlphaNumericToNumeric
The `LuhnDotNet` library provides the `ComputeLuhnCheckDigit` method which can be used to compute the check digit of a numeric string according to the Luhn algorithm. When dealing with an International Securities Identification Number (ISIN), which is a 12-character alphanumeric code, we first need to convert the alphanumeric ISIN to a numeric string. This can be achieved using the `ConvertAlphaNumericToNumeric` method.
Here is an example of how to compute the check digit of an ISIN:
```csharp
using System;
using LuhnDotNet;
namespace Example6
{
public class Program
{
public static void Main(string[] args)
{
string isinWithoutCheckDigit = "US037833100";
byte checkDigit = isinWithoutCheckDigit.ConvertAlphaNumericToNumeric().ComputeLuhnCheckDigit();
Console.WriteLine($"The check digit for ISIN {isinWithoutCheckDigit} is: {checkDigit}");
}
}
}
```
## Compute credit card number with LuhnDotNet
The `LuhnDotNet` library can be used to compute the check digit of a credit card number. The check digit is the last digit of the credit card number, which is used to validate the number according to the Luhn algorithm.
```csharp
using System;
using LuhnDotNet;
namespace Example7
{
public class Program
{
public static void Main(string[] args)
{
string creditCardNumberWithoutCheckDigit = "4417 1234 5678 911".Replace(" ", "");
byte checkDigit = creditCardNumberWithoutCheckDigit.ComputeLuhnCheckDigit();
Console.WriteLine($"The check digit for credit card number {creditCardNumberWithoutCheckDigit} is: {checkDigit}");
}
}
}
```
## Validate credit card number with LuhnDotNet
The `LuhnDotNet` library can be used to validate a credit card number according to the Luhn algorithm. The `IsValid` method returns `true` if the credit card number is valid, and `false` otherwise.
```csharp
using System;
using LuhnDotNet;
namespace Example8
{
public class Program
{
public static void Main(string[] args)
{
string creditCardNumber = "4417 1234 5678 9113".Replace(" ", "");
bool isValid = creditCardNumber.IsValidLuhnNumber();
Console.WriteLine($"The credit card number {creditCardNumber} is valid: {isValid}");
}
}
}
```
# CLI building instructions
For the following instructions, please make sure that you are connected to the internet. If necessary, NuGet will try to restore the [xUnit](https://xunit.net/) packages.
## Using dotnet to build for .NET 8, .NET 9 and .NET FX 4.x
Use one of the following solutions with `dotnet` to build [LuhnDotNet](#luhndotnet):
* `LuhnDotNet.sln` (all, [see table](#build--test-status-of-default-branch))
The syntax is:
```dotnetcli
dotnet {restore|build|test} -c {Debug|Release} LuhnDotNet.sln
```
### Restore NuGet packages
```dotnetcli
dotnet restore LuhnDotNet.sln
```
The instructions below are examples, which operate on the `LuhnDotNet.sln`.
### Build Debug configuration
```dotnetcli
dotnet build -c Debug --no-restore LuhnDotNet.sln
```
### Build Release configuration
```dotnetcli
dotnet build -c Release --no-restore LuhnDotNet.sln
```
### Test Debug configuration
```dotnetcli
dotnet test -c Debug --no-restore --no-build LuhnDotNet.sln
```
### Test Release configuration
```dotnetcli
dotnet test -c Release --no-restore --no-build LuhnDotNet.sln
```