View Single Post
  #4   Report Post  
Posted to microsoft.public.excel.programming
mrjames mrjames is offline
external usenet poster
 
Posts: 1
Default Excel VBA: calculating checksums


Leith Ross Wrote:
Hello Henry,

Here is the code for Luhn CRC. I know it isn't the 32 bit CRC
alogrithm. If you lnow the math for the 32 bit CRC then you can use the
Luhn CRC algorithm as a VBA model to construct the 32 bit CRC. Hope this
helps some.


Code:
--------------------
'This is the Luhn Formula as described in ISO/IEC 7812-1:1993.

'Its primary purpose is to ensure accurate entries of the credit card number
'during transactions. You can apply the same technique to other applications
'such as employee numbers or patient numbers. Using check digits for these
'numbers also ensures more accurate data entries.

Public Function CheckDigit(strNum As String) As Integer

Dim i As Integer
Dim iEven As Integer
Dim iOdd As Integer
Dim iTotal As Integer
Dim strOneChar As String
Dim iTemp As Integer

' Add digits in even ordinal positions
' starting from rightmost
For i = Len(strNum) - 1 To 2 Step -2

strOneChar = Mid$(strNum, i, 1)
If IsNumeric(strOneChar) Then
iEven = iEven + CInt(strOneChar)
End If
Next i

' Process digits in odd ordinal positions
' starting from rightmost
For i = Len(strNum) To 1 Step -2
strOneChar = Mid$(strNum, i, 1)
If IsNumeric(strOneChar) Then
' Double it
iTemp = CInt(strOneChar) * 2
If iTemp 9 Then
' Break the digits (e.g., 19 becomes 1+9)
iOdd = iOdd + (iTemp \ 10) + (iTemp - 10)
Else
iOdd = iOdd + iTemp
End If
End If
Next i

' Add even and odd
iTotal = iEven + iOdd

' Return the 10's complement
CheckDigit = 10 - (iTotal Mod 10)

End Function

--------------------

Sincerely,
Leith Ross



Hi Leith Ross
I hope you are still around, i needed your Luhn digit checksum urgently
but it did not calculate the way i wanted it to when i loaded it to
Excel. I think there are a few ways of doing the sum.

I found the formula that calculates the way i wanted although it looks
to be the same as the one you done a whle ago:
Luhn Check Digit




Calculation

Step 1 Double the values of the odd labelled digits of the IMEI.
Step 2a Add together all the individual digits obtaind in step 1.
Step 2b Add the sum obtained in Step 2a together with the sum of all
even labelled digits of the IMEI
Step 3 If the number obtained in Step 2b end with '0' then the Luhn
Check Digit will be 0, otherwise the Luhn Check Digit will be the
substraction of the result from Step 2b with the next higher number
ending with a zero.


Example

Enter IMEI :

D14 D13 D12 D11 D10 D09 D08 D07 D06 D05 D04 D03 D02 D01
4 9 0 1 5 4 2 0 3 2 3 7 5 1

Calculation
Step 1:
18 2 8 0 4 14 2
Step 2a+b
( 1+8 + 2 + 8 + 0 + 4 + 1+4 + 2 ) + ( 4 + 0 + 5 + 2 + 3 + 3 + 5 )
= 52
Step 3:
Luhn Digit : 8
IMEI :
490154-20-323751-8


Please help me as i am not very good with computer stuff.


--
mrjames
------------------------------------------------------------------------
mrjames's Profile: http://www.excelforum.com/member.php...o&userid=35732
View this thread: http://www.excelforum.com/showthread...hreadid=482390