项目作者: dfaramarzi

项目描述 :
Check validation for National Code and IBAN for Iranian
高级语言:
项目地址: git://github.com/dfaramarzi/Validation-of-National-Code-and-IBAN.git
创建时间: 2019-07-27T09:44:07Z
项目社区:https://github.com/dfaramarzi/Validation-of-National-Code-and-IBAN

开源协议:MIT License

下载


Validation-of-National-Code-and-IBAN

Check validation of Iranian National Code and IBAN in C#.

National Code Validation

  1. public bool IsValid(string socialSecurityCode)
  2. {
  3. if (string.IsNullOrEmpty(socialSecurityCode))
  4. return false;
  5. if (!new Regex(@"\d{10}").IsMatch(socialSecurityCode))
  6. return false;
  7. var array = socialSecurityCode.ToCharArray();
  8. var allDigitEqual = new[]
  9. {
  10. "0000000000", "1111111111", "2222222222", "3333333333", "4444444444", "5555555555", "6666666666",
  11. "7777777777", "8888888888", "9999999999"
  12. };
  13. if (allDigitEqual.Contains(socialSecurityCode))
  14. return false;
  15. var j = 10;
  16. long sum = 0;
  17. for (var i = 0; i < array.Length - 1; i++)
  18. {
  19. sum += long.Parse(array[i].ToString(CultureInfo.InvariantCulture)) * j;
  20. j--;
  21. }
  22. var div = sum / 11;
  23. var r = div * 11;
  24. var diff = Math.Abs(sum - r);
  25. if (diff <= 2) return diff == long.Parse(array[9].ToString(CultureInfo.InvariantCulture));
  26. var temp = Math.Abs(diff - 11);
  27. var o = long.Parse(array[9].ToString(CultureInfo.InvariantCulture));
  28. return temp == long.Parse(array[9].ToString(CultureInfo.InvariantCulture));
  29. }

IBAN Validation

  1. public bool IsValid(string IBAN)
  2. {
  3. IBAN = IBAN.ToUpper();
  4. if (IBAN.Length != 26) return false;
  5. var changediban = IBAN.Substring(4, 22);
  6. changediban = changediban.Insert(22, (Convert.ToInt16(IBAN[0]) - 55).ToString());
  7. changediban = changediban.Insert(24, (Convert.ToInt16(IBAN[1]) - 55).ToString());
  8. changediban = changediban.Insert(26, IBAN.Substring(2, 2));
  9. if (BigInteger.Parse(changediban) % 97 != 1) return false;
  10. return true;
  11. }