# Generate registration keys just like WinZip's :)

Generates registration key based on name.

Original Author: DarkMan

Name

### Assumptions

This could be used if you would like registered owners of WinZip to be able to also use your code.
Obviously you should not use it to generate keys for WinZip if you have not purchased it.

Licence Key

### Code

`'Thanks to R!SC for the assembler version which this is based onPublic Function GenerateKey(ByVal Name As String) As String  Dim lPart1 As Long  Dim lPart2 As Long  Dim ch As Long  Dim i As Long  Dim n As Long    'Name is trimmed and restricted to 40  Name = Trim\$(Name)  Name = Mid\$(Name, 1, 40)  If Len(Name) = 0 Then    Exit Function  End If    'The key is made up of two parts, both 4 digit hex values    'Part1 is quite tricky  For i = 1 To Len(Name)    ch = Asc(Mid\$(Name, i, 1)) * &H100    'Run through the calculations 8 times for each character    For n = 1 To 8      'Do different things based on the result of this wierd if      If (((ch Xor lPart1) Mod &H10000) And &H8000&) = 0 Then        'Bit shift 1 bit left        lPart1 = lPart1 And &HFFFFFFF        lPart1 = lPart1 * 2      Else        'Bit shift 1 bit left        lPart1 = lPart1 And &HFFFFFFF        lPart1 = lPart1 * 2        'Xor with the magic number        lPart1 = lPart1 Xor &H1021&      End If      ch = ch * 2    Next n  Next i  'Add a bit for luck  lPart1 = lPart1 + &H63&  'Only want 4 digits  lPart1 = lPart1 Mod &H10000    'Part2 is very simple  For i = 1 To Len(Name)    lPart2 = lPart2 + (Asc(Mid\$(Name, i, 1)) * (i - 1))  Next i  'Build up from 2 parts (making sure each part is 4 digits)  GenerateKey = String\$(4 - Len(CStr(Hex(lPart1))), "0") _        & CStr(Hex(lPart1)) _        & String\$(4 - Len(CStr(Hex(lPart2))), "0") _        & CStr(Hex(lPart2))End Function`

Posted: 2002-06-01
By: ArchiveBot
Viewed: 78 times

Categories

Visual Basic 6

Attachments

No attachments for this post