public class BgcOcrCheckSum
{
public static string GetBgcCheckSumFromOcrString(string ocrWithChecksum)
{
return string.IsNullOrEmpty(ocrWithChecksum) ? string.Empty : ocrWithChecksum.Substring(ocrWithChecksum.Length - 1);
}
public static long CalculateBgcOcrChecksum(string ocrWithoutChecksum)
{
long lngSum = 0;
for (var lngPos = 0; lngPos < ocrWithoutChecksum.Length; lngPos++)
{
var lngTemp = int.Parse(ocrWithoutChecksum[lngPos].ToString()) * ((lngPos % 2) + 1);
if (lngTemp > 9)
lngTemp = lngTemp - 9;
lngSum = lngSum + lngTemp;
}
var checkNumber = (10 - (lngSum % 10)) % 10;
return checkNumber;
}
public static bool VerifyBgcOcrCheckSum(string ocrWithChecksum)
{
var checkSum = GetBgcCheckSumFromOcrString(ocrWithChecksum);
var stringWithoutSum = ocrWithChecksum.Substring(0, ocrWithChecksum.Length - 1);
var calculatedCheckSum = CalculateBgcOcrChecksum(stringWithoutSum);
return calculatedCheckSum == long.Parse(checkSum);
}
}
Fork
Calculate the checksum for Bankgiro or Postgiro ORC-numbers by using 10-modul. - @fredrikn Wednesday 29, 2010 1:15 PM
0 Feedback
You must log in before you can give any feedback
You must log in before you can post a comment


366
0




Mark 'algorithm' tag as 'like'
Mark 'algorithm' tag as 'ignore'