Here, we will learn about how to generate the ISO 7064 compatible number. When I got this task, I also searched for whole day, but didn’t got anything for c#, I got for JavaScript, so converted the code from JavaScript to C# and now its working perfectly fine.
A LEI code is normalized with International Organization for Standardization (ISO) declaration 17442. This Consists of a blend of 20 numbers and letters.
using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; namespace Testing { class GenerateLeiNumber { private static string _leiPrefix = "558600"; private static int _leiLength = 12; private static readonly RNGCryptoServiceProvider RandomGenerator = new RNGCryptoServiceProvider(); private static readonly char[] ValidCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray(); public static string GenrateLeiNumberService() { var randomData = new byte[_leiLength]; RandomGenerator.GetNonZeroBytes(randomData); var result = new StringBuilder(_leiLength); int counter = 0; foreach (var value in randomData) { counter = (counter + value) % (ValidCharacters.Length - 1); result.Append(ValidCharacters[counter]); } string randomString = result.ToString(); randomString = string.Format("{0}{1}", _leiPrefix, randomString); string checkDigit = CheckDigits.ComputeWithoutCheck(randomString); if (string.IsNullOrEmpty(checkDigit)) return ""; return string.Format("{0}{1}", randomString, checkDigit); } public static void Main(string[] args) { var leiNumber = GenrateLeiNumberService(); Console.WriteLine("Lei Number: " + leiNumber); } } public class CheckDigits { const int CHARCODE_A = 65; const int CHARCODE_0 = 48; private static int Mod97(string value) { int buffer = 0; byte[] ASCIIValues = Encoding.ASCII.GetBytes(value); for (var i = 0; i < value.Length; ++i) { int charCode = ASCIIValues[i]; buffer = charCode + (charCode >= CHARCODE_A ? buffer * 100 - CHARCODE_A + 10 : buffer * 10 - CHARCODE_0); if (buffer > 1000000) { buffer %= 97; } } return buffer % 97; } public static string ComputeWithoutCheck(string value) { var fullNumber = value + ("0" + (98 - Mod97(value + "00"))); return fullNumber.Substring(fullNumber.Length - 2); } } }
That’s it.
In this article, we have to show Create and Used PIPE in angular
In this article, we have to show Create and Used PIPE in angular
In this article, we have to show Create and Used PIPE in angular