# All possibilities that can add up to a number



## shuggans (Sep 14, 2011)

Ok.  So... I've written a validation program that works great.  But now my problem is this:  I need to write the key generator that will be used to generate my keys.  

This is beyond my math skillset... I need to know how to return all possible values where 5 characters make up another number.

For example:

(Y)=50 
Where Y = {All possible values of X+X+X+X+X}


----------



## shuggans (Sep 14, 2011)

language is vb.net btw


----------



## Neuromancer (Sep 14, 2011)

Homework is best done on your own. 

TBH: Search engines should be taught in school. Each is different and google has gotten dumber.


----------



## FordGT90Concept (Sep 14, 2011)

@Neuromancer: If there was a No Thanks button on this forum, I'd click it for you. 

@shuggans: I'm not sure I follow.  Could you provide a complete example of inputs and outputs?


----------



## shuggans (Sep 14, 2011)

Neuromancer said:


> Homework is best done on your own. Otherwise you are a stupid f**k. You would not have been given it as a problem if you were not taught it. School is funny that way. Unless it is extra credit, then use google and deduce it on your own.



Actually, I'm working on a project that I've been working on since last year and through the summer as I learn VB.net.  Go back and read almost any one of my posts ever made.  I'm very offended.  I know what I'm looking to get, just not how to get there.  Anyone can come up with an algebraic problem.  Being able to see the logical way to do it is another thing.  

I'm to the point in my project where I would like to add license keys.  I've implemented that into it already.  I just don't want to sit and write out every new code that is needed.

As I said, the Math formula behind this is beyond my scope of thinking.  I was asking for help with a project I've been working on to try and start a business selling software to educational institutions.  Just need the anti-piracy, and never wrote a keygen or actually looked at license keys before.  I was pretty proud of myself for coming up with the method to do so at all, and will probably be posting code for the license key part of what I did here after a couple days of bug testing.

I might add that in over a year and half on the TPU forums have I ever seen somebody so rudely reply to a question.  I thought you all might enjoy the challenge of this problem.


----------



## shuggans (Sep 14, 2011)

Ford, let me change up my key algorithm and post the license key code.


----------



## shuggans (Sep 14, 2011)

*Protecting Software with License Key (code) (source included)*

I'm only posting this code because I looked EVERYWHERE and no one had any samples to start out with.  You are free to use the code, just please make some not of thanks in your program.  Also: if you are not a TPU forum member and use the code, I ask that you please sign up on the Tech Power Up forums and give something back (knowledge, help, etc.) to someone else in need.

This is probably by FAR NOT the best way to this, but it's all I could come up with that didn't involve hardware on the machine.  I do not have a key generator to go along with it... but the following key will validate with the included project file if run - "0C660-A0006-0C660-G0088".

Happy Coding TPU


```
'Original Code by Sean Huggans (shuggans)
'Provided for use by Tech Power Up forum members (If you grab this code, please sign up for TPU!)
'9/13/2011

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        TextBox_GroupA.MaxLength = 5
        TextBox_GroupB.MaxLength = 5
        TextBox_GroupC.MaxLength = 5
        TextBox_GroupD.MaxLength = 5
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'grab all textbox strings....
        Dim GroupA As String = TextBox_GroupA.Text.ToUpper
        Dim GroupB As String = TextBox_GroupB.Text.ToUpper
        Dim GroupC As String = TextBox_GroupC.Text.ToUpper
        Dim GroupD As String = TextBox_GroupD.Text.ToUpper

        '------ check to make sure there are 5 characters in each text box... these numbers could be changed to add security or mix it up a bit.... you'd need to set the textbox maxlength above to match, and delete the corresponding strings below.
        If GroupA.Length = 5 And GroupB.Length = 5 And GroupC.Length = 5 And GroupD.Length = 5 Then

            '----- break our textbox strings into individual character strings
            Dim char1 As String = GroupA.Chars(0)
            Dim char2 As String = GroupA.Chars(1)
            Dim char3 As String = GroupA.Chars(2)
            Dim char4 As String = GroupA.Chars(3)
            Dim char5 As String = GroupA.Chars(4)

            Dim char6 As String = GroupB.Chars(0)
            Dim char7 As String = GroupB.Chars(1)
            Dim char8 As String = GroupB.Chars(2)
            Dim char9 As String = GroupB.Chars(3)
            Dim char10 As String = GroupB.Chars(4)

            Dim char11 As String = GroupC.Chars(0)
            Dim char12 As String = GroupC.Chars(1)
            Dim char13 As String = GroupC.Chars(2)
            Dim char14 As String = GroupC.Chars(3)
            Dim char15 As String = GroupC.Chars(4)

            Dim char16 As String = GroupD.Chars(0)
            Dim char17 As String = GroupD.Chars(1)
            Dim char18 As String = GroupD.Chars(2)
            Dim char19 As String = GroupD.Chars(3)
            Dim char20 As String = GroupD.Chars(4)

            '---- give all our characters a numeric value if they are letters.  I would change this up as well if you are actually going to implement this code.
            If char1 = "A" Then
                char1 = "10"
            ElseIf char1 = "B" Then
                char1 = "11"
            ElseIf char1 = "C" Then
                char1 = "12"
            ElseIf char1 = "D" Then
                char1 = "13"
            ElseIf char1 = "E" Then
                char1 = "14"
            ElseIf char1 = "F" Then
                char1 = "15"
            ElseIf char1 = "G" Then
                char1 = "16"
            ElseIf char1 = "H" Then
                char1 = "17"
            ElseIf char1 = "I" Then
                char1 = "18"
            ElseIf char1 = "J" Then
                char1 = "19"
            ElseIf char1 = "K" Then
                char1 = "20"
            ElseIf char1 = "L" Then
                char1 = "21"
            ElseIf char1 = "M" Then
                char1 = "22"
            ElseIf char1 = "N" Then
                char1 = "23"
            ElseIf char1 = "O" Then
                char1 = "24"
            ElseIf char1 = "P" Then
                char1 = "25"
            ElseIf char1 = "Q" Then
                char1 = "26"
            ElseIf char1 = "R" Then
                char1 = "27"
            ElseIf char1 = "S" Then
                char1 = "28"
            ElseIf char1 = "T" Then
                char1 = "29"
            ElseIf char1 = "U" Then
                char1 = "30"
            ElseIf char1 = "V" Then
                char1 = "31"
            ElseIf char1 = "W" Then
                char1 = "32"
            ElseIf char1 = "X" Then
                char1 = "33"
            ElseIf char1 = "Y" Then
                char1 = "34"
            ElseIf char1 = "Z" Then
                char1 = "35"
            End If
            If char2 = "A" Then
                char2 = "10"
            ElseIf char2 = "B" Then
                char2 = "11"
            ElseIf char2 = "C" Then
                char2 = "12"
            ElseIf char2 = "D" Then
                char2 = "13"
            ElseIf char2 = "E" Then
                char2 = "14"
            ElseIf char2 = "F" Then
                char2 = "15"
            ElseIf char2 = "G" Then
                char2 = "16"
            ElseIf char2 = "H" Then
                char2 = "17"
            ElseIf char2 = "I" Then
                char2 = "18"
            ElseIf char2 = "J" Then
                char2 = "19"
            ElseIf char2 = "K" Then
                char2 = "20"
            ElseIf char2 = "L" Then
                char2 = "21"
            ElseIf char2 = "M" Then
                char2 = "22"
            ElseIf char2 = "N" Then
                char2 = "23"
            ElseIf char2 = "O" Then
                char2 = "24"
            ElseIf char2 = "P" Then
                char2 = "25"
            ElseIf char2 = "Q" Then
                char2 = "26"
            ElseIf char2 = "R" Then
                char2 = "27"
            ElseIf char2 = "S" Then
                char2 = "28"
            ElseIf char2 = "T" Then
                char2 = "29"
            ElseIf char2 = "U" Then
                char2 = "30"
            ElseIf char2 = "V" Then
                char2 = "31"
            ElseIf char2 = "W" Then
                char2 = "32"
            ElseIf char2 = "X" Then
                char2 = "33"
            ElseIf char2 = "Y" Then
                char2 = "34"
            ElseIf char2 = "Z" Then
                char2 = "35"
            End If
            If char3 = "A" Then
                char3 = "10"
            ElseIf char3 = "B" Then
                char3 = "11"
            ElseIf char3 = "C" Then
                char3 = "12"
            ElseIf char3 = "D" Then
                char3 = "13"
            ElseIf char3 = "E" Then
                char3 = "14"
            ElseIf char3 = "F" Then
                char3 = "15"
            ElseIf char3 = "G" Then
                char3 = "16"
            ElseIf char3 = "H" Then
                char3 = "17"
            ElseIf char3 = "I" Then
                char3 = "18"
            ElseIf char3 = "J" Then
                char3 = "19"
            ElseIf char3 = "K" Then
                char3 = "20"
            ElseIf char3 = "L" Then
                char3 = "21"
            ElseIf char3 = "M" Then
                char3 = "22"
            ElseIf char3 = "N" Then
                char3 = "23"
            ElseIf char3 = "O" Then
                char3 = "24"
            ElseIf char3 = "P" Then
                char3 = "25"
            ElseIf char3 = "Q" Then
                char3 = "26"
            ElseIf char3 = "R" Then
                char3 = "27"
            ElseIf char3 = "S" Then
                char3 = "28"
            ElseIf char3 = "T" Then
                char3 = "29"
            ElseIf char3 = "U" Then
                char3 = "30"
            ElseIf char3 = "V" Then
                char3 = "31"
            ElseIf char3 = "W" Then
                char3 = "32"
            ElseIf char3 = "X" Then
                char3 = "33"
            ElseIf char3 = "Y" Then
                char3 = "34"
            ElseIf char3 = "Z" Then
                char3 = "35"
            End If
            If char4 = "A" Then
                char4 = "10"
            ElseIf char4 = "B" Then
                char4 = "11"
            ElseIf char4 = "C" Then
                char4 = "12"
            ElseIf char4 = "D" Then
                char4 = "13"
            ElseIf char4 = "E" Then
                char4 = "14"
            ElseIf char4 = "F" Then
                char4 = "15"
            ElseIf char4 = "G" Then
                char4 = "16"
            ElseIf char4 = "H" Then
                char4 = "17"
            ElseIf char4 = "I" Then
                char4 = "18"
            ElseIf char4 = "J" Then
                char4 = "19"
            ElseIf char4 = "K" Then
                char4 = "20"
            ElseIf char4 = "L" Then
                char4 = "21"
            ElseIf char4 = "M" Then
                char4 = "22"
            ElseIf char4 = "N" Then
                char4 = "23"
            ElseIf char4 = "O" Then
                char4 = "24"
            ElseIf char4 = "P" Then
                char4 = "25"
            ElseIf char4 = "Q" Then
                char4 = "26"
            ElseIf char4 = "R" Then
                char4 = "27"
            ElseIf char4 = "S" Then
                char4 = "28"
            ElseIf char4 = "T" Then
                char4 = "29"
            ElseIf char4 = "U" Then
                char4 = "30"
            ElseIf char4 = "V" Then
                char4 = "31"
            ElseIf char4 = "W" Then
                char4 = "32"
            ElseIf char4 = "X" Then
                char4 = "33"
            ElseIf char4 = "Y" Then
                char4 = "34"
            ElseIf char4 = "Z" Then
                char4 = "35"
            End If
            If char5 = "A" Then
                char5 = "10"
            ElseIf char5 = "B" Then
                char5 = "11"
            ElseIf char5 = "C" Then
                char5 = "12"
            ElseIf char5 = "D" Then
                char5 = "13"
            ElseIf char5 = "E" Then
                char5 = "14"
            ElseIf char5 = "F" Then
                char5 = "15"
            ElseIf char5 = "G" Then
                char5 = "16"
            ElseIf char5 = "H" Then
                char5 = "17"
            ElseIf char5 = "I" Then
                char5 = "18"
            ElseIf char5 = "J" Then
                char5 = "19"
            ElseIf char5 = "K" Then
                char5 = "20"
            ElseIf char5 = "L" Then
                char5 = "21"
            ElseIf char5 = "M" Then
                char5 = "22"
            ElseIf char5 = "N" Then
                char5 = "23"
            ElseIf char5 = "O" Then
                char5 = "24"
            ElseIf char5 = "P" Then
                char5 = "25"
            ElseIf char5 = "Q" Then
                char5 = "26"
            ElseIf char5 = "R" Then
                char5 = "27"
            ElseIf char5 = "S" Then
                char5 = "28"
            ElseIf char5 = "T" Then
                char5 = "29"
            ElseIf char5 = "U" Then
                char5 = "30"
            ElseIf char5 = "V" Then
                char5 = "31"
            ElseIf char5 = "W" Then
                char5 = "32"
            ElseIf char5 = "X" Then
                char5 = "33"
            ElseIf char5 = "Y" Then
                char5 = "34"
            ElseIf char5 = "Z" Then
                char5 = "35"
            End If

            If char6 = "A" Then
                char6 = "10"
            ElseIf char6 = "B" Then
                char6 = "11"
            ElseIf char6 = "C" Then
                char6 = "12"
            ElseIf char6 = "D" Then
                char6 = "13"
            ElseIf char6 = "E" Then
                char6 = "14"
            ElseIf char6 = "F" Then
                char6 = "15"
            ElseIf char6 = "G" Then
                char6 = "16"
            ElseIf char6 = "H" Then
                char6 = "17"
            ElseIf char6 = "I" Then
                char6 = "18"
            ElseIf char6 = "J" Then
                char6 = "19"
            ElseIf char6 = "K" Then
                char6 = "20"
            ElseIf char6 = "L" Then
                char6 = "21"
            ElseIf char6 = "M" Then
                char6 = "22"
            ElseIf char6 = "N" Then
                char6 = "23"
            ElseIf char6 = "O" Then
                char6 = "24"
            ElseIf char6 = "P" Then
                char6 = "25"
            ElseIf char6 = "Q" Then
                char6 = "26"
            ElseIf char6 = "R" Then
                char6 = "27"
            ElseIf char6 = "S" Then
                char6 = "28"
            ElseIf char6 = "T" Then
                char6 = "29"
            ElseIf char6 = "U" Then
                char6 = "30"
            ElseIf char6 = "V" Then
                char6 = "31"
            ElseIf char6 = "W" Then
                char6 = "32"
            ElseIf char6 = "X" Then
                char6 = "33"
            ElseIf char6 = "Y" Then
                char6 = "34"
            ElseIf char6 = "Z" Then
                char6 = "35"
            End If
            If char7 = "A" Then
                char7 = "10"
            ElseIf char7 = "B" Then
                char7 = "11"
            ElseIf char7 = "C" Then
                char7 = "12"
            ElseIf char7 = "D" Then
                char7 = "13"
            ElseIf char7 = "E" Then
                char7 = "14"
            ElseIf char7 = "F" Then
                char7 = "15"
            ElseIf char7 = "G" Then
                char7 = "16"
            ElseIf char7 = "H" Then
                char7 = "17"
            ElseIf char7 = "I" Then
                char7 = "18"
            ElseIf char7 = "J" Then
                char7 = "19"
            ElseIf char7 = "K" Then
                char7 = "20"
            ElseIf char7 = "L" Then
                char7 = "21"
            ElseIf char7 = "M" Then
                char7 = "22"
            ElseIf char7 = "N" Then
                char7 = "23"
            ElseIf char7 = "O" Then
                char7 = "24"
            ElseIf char7 = "P" Then
                char7 = "25"
            ElseIf char7 = "Q" Then
                char7 = "26"
            ElseIf char7 = "R" Then
                char7 = "27"
            ElseIf char7 = "S" Then
                char7 = "28"
            ElseIf char7 = "T" Then
                char7 = "29"
            ElseIf char7 = "U" Then
                char7 = "30"
            ElseIf char7 = "V" Then
                char7 = "31"
            ElseIf char7 = "W" Then
                char7 = "32"
            ElseIf char7 = "X" Then
                char7 = "33"
            ElseIf char7 = "Y" Then
                char7 = "34"
            ElseIf char7 = "Z" Then
                char7 = "35"
            End If
            If char8 = "A" Then
                char8 = "10"
            ElseIf char8 = "B" Then
                char8 = "11"
            ElseIf char8 = "C" Then
                char8 = "12"
            ElseIf char8 = "D" Then
                char8 = "13"
            ElseIf char8 = "E" Then
                char8 = "14"
            ElseIf char8 = "F" Then
                char8 = "15"
            ElseIf char8 = "G" Then
                char8 = "16"
            ElseIf char8 = "H" Then
                char8 = "17"
            ElseIf char8 = "I" Then
                char8 = "18"
            ElseIf char8 = "J" Then
                char8 = "19"
            ElseIf char8 = "K" Then
                char8 = "20"
            ElseIf char8 = "L" Then
                char8 = "21"
            ElseIf char8 = "M" Then
                char8 = "22"
            ElseIf char8 = "N" Then
                char8 = "23"
            ElseIf char8 = "O" Then
                char8 = "24"
            ElseIf char8 = "P" Then
                char8 = "25"
            ElseIf char8 = "Q" Then
                char8 = "26"
            ElseIf char8 = "R" Then
                char8 = "27"
            ElseIf char8 = "S" Then
                char8 = "28"
            ElseIf char8 = "T" Then
                char8 = "29"
            ElseIf char8 = "U" Then
                char8 = "30"
            ElseIf char8 = "V" Then
                char8 = "31"
            ElseIf char8 = "W" Then
                char8 = "32"
            ElseIf char8 = "X" Then
                char8 = "33"
            ElseIf char8 = "Y" Then
                char8 = "34"
            ElseIf char8 = "Z" Then
                char8 = "35"
            End If
            If char9 = "A" Then
                char9 = "10"
            ElseIf char9 = "B" Then
                char9 = "11"
            ElseIf char9 = "C" Then
                char9 = "12"
            ElseIf char9 = "D" Then
                char9 = "13"
            ElseIf char9 = "E" Then
                char9 = "14"
            ElseIf char9 = "F" Then
                char9 = "15"
            ElseIf char9 = "G" Then
                char9 = "16"
            ElseIf char9 = "H" Then
                char9 = "17"
            ElseIf char9 = "I" Then
                char9 = "18"
            ElseIf char9 = "J" Then
                char9 = "19"
            ElseIf char9 = "K" Then
                char9 = "20"
            ElseIf char9 = "L" Then
                char9 = "21"
            ElseIf char9 = "M" Then
                char9 = "22"
            ElseIf char9 = "N" Then
                char9 = "23"
            ElseIf char9 = "O" Then
                char9 = "24"
            ElseIf char9 = "P" Then
                char9 = "25"
            ElseIf char9 = "Q" Then
                char9 = "26"
            ElseIf char9 = "R" Then
                char9 = "27"
            ElseIf char9 = "S" Then
                char9 = "28"
            ElseIf char9 = "T" Then
                char9 = "29"
            ElseIf char9 = "U" Then
                char9 = "30"
            ElseIf char9 = "V" Then
                char9 = "31"
            ElseIf char9 = "W" Then
                char9 = "32"
            ElseIf char9 = "X" Then
                char9 = "33"
            ElseIf char9 = "Y" Then
                char9 = "34"
            ElseIf char9 = "Z" Then
                char9 = "35"
            End If
            If char10 = "A" Then
                char10 = "10"
            ElseIf char10 = "B" Then
                char10 = "11"
            ElseIf char10 = "C" Then
                char10 = "12"
            ElseIf char10 = "D" Then
                char10 = "13"
            ElseIf char10 = "E" Then
                char10 = "14"
            ElseIf char10 = "F" Then
                char10 = "15"
            ElseIf char10 = "G" Then
                char10 = "16"
            ElseIf char10 = "H" Then
                char10 = "17"
            ElseIf char10 = "I" Then
                char10 = "18"
            ElseIf char10 = "J" Then
                char10 = "19"
            ElseIf char10 = "K" Then
                char10 = "20"
            ElseIf char10 = "L" Then
                char10 = "21"
            ElseIf char10 = "M" Then
                char10 = "22"
            ElseIf char10 = "N" Then
                char10 = "23"
            ElseIf char10 = "O" Then
                char10 = "24"
            ElseIf char10 = "P" Then
                char10 = "25"
            ElseIf char10 = "Q" Then
                char10 = "26"
            ElseIf char10 = "R" Then
                char10 = "27"
            ElseIf char10 = "S" Then
                char10 = "28"
            ElseIf char10 = "T" Then
                char10 = "29"
            ElseIf char10 = "U" Then
                char10 = "30"
            ElseIf char10 = "V" Then
                char10 = "31"
            ElseIf char10 = "W" Then
                char10 = "32"
            ElseIf char10 = "X" Then
                char10 = "33"
            ElseIf char10 = "Y" Then
                char10 = "34"
            ElseIf char10 = "Z" Then
                char10 = "35"
            End If

            If char11 = "A" Then
                char11 = "10"
            ElseIf char11 = "B" Then
                char11 = "11"
            ElseIf char11 = "C" Then
                char11 = "12"
            ElseIf char11 = "D" Then
                char11 = "13"
            ElseIf char11 = "E" Then
                char11 = "14"
            ElseIf char11 = "F" Then
                char11 = "15"
            ElseIf char11 = "G" Then
                char11 = "16"
            ElseIf char11 = "H" Then
                char11 = "17"
            ElseIf char11 = "I" Then
                char11 = "18"
            ElseIf char11 = "J" Then
                char11 = "19"
            ElseIf char11 = "K" Then
                char11 = "20"
            ElseIf char11 = "L" Then
                char11 = "21"
            ElseIf char11 = "M" Then
                char11 = "22"
            ElseIf char11 = "N" Then
                char11 = "23"
            ElseIf char11 = "O" Then
                char11 = "24"
            ElseIf char11 = "P" Then
                char11 = "25"
            ElseIf char11 = "Q" Then
                char11 = "26"
            ElseIf char11 = "R" Then
                char11 = "27"
            ElseIf char11 = "S" Then
                char11 = "28"
            ElseIf char11 = "T" Then
                char11 = "29"
            ElseIf char11 = "U" Then
                char11 = "30"
            ElseIf char11 = "V" Then
                char11 = "31"
            ElseIf char11 = "W" Then
                char11 = "32"
            ElseIf char11 = "X" Then
                char11 = "33"
            ElseIf char11 = "Y" Then
                char11 = "34"
            ElseIf char11 = "Z" Then
                char11 = "35"
            End If

            If char12 = "A" Then
                char12 = "10"
            ElseIf char12 = "B" Then
                char12 = "11"
            ElseIf char12 = "C" Then
                char12 = "12"
            ElseIf char12 = "D" Then
                char12 = "13"
            ElseIf char12 = "E" Then
                char12 = "14"
            ElseIf char12 = "F" Then
                char12 = "15"
            ElseIf char12 = "G" Then
                char12 = "16"
            ElseIf char12 = "H" Then
                char12 = "17"
            ElseIf char12 = "I" Then
                char12 = "18"
            ElseIf char12 = "J" Then
                char12 = "19"
            ElseIf char12 = "K" Then
                char12 = "20"
            ElseIf char12 = "L" Then
                char12 = "21"
            ElseIf char12 = "M" Then
                char12 = "22"
            ElseIf char12 = "N" Then
                char12 = "23"
            ElseIf char12 = "O" Then
                char12 = "24"
            ElseIf char12 = "P" Then
                char12 = "25"
            ElseIf char12 = "Q" Then
                char12 = "26"
            ElseIf char12 = "R" Then
                char12 = "27"
            ElseIf char12 = "S" Then
                char12 = "28"
            ElseIf char12 = "T" Then
                char12 = "29"
            ElseIf char12 = "U" Then
                char12 = "30"
            ElseIf char12 = "V" Then
                char12 = "31"
            ElseIf char12 = "W" Then
                char12 = "32"
            ElseIf char12 = "X" Then
                char12 = "33"
            ElseIf char12 = "Y" Then
                char12 = "34"
            ElseIf char12 = "Z" Then
                char12 = "35"
            End If

            If char13 = "A" Then
                char13 = "10"
            ElseIf char13 = "B" Then
                char13 = "11"
            ElseIf char13 = "C" Then
                char13 = "12"
            ElseIf char13 = "D" Then
                char13 = "13"
            ElseIf char13 = "E" Then
                char13 = "14"
            ElseIf char13 = "F" Then
                char13 = "15"
            ElseIf char13 = "G" Then
                char13 = "16"
            ElseIf char13 = "H" Then
                char13 = "17"
            ElseIf char13 = "I" Then
                char13 = "18"
            ElseIf char13 = "J" Then
                char13 = "19"
            ElseIf char13 = "K" Then
                char13 = "20"
            ElseIf char13 = "L" Then
                char13 = "21"
            ElseIf char13 = "M" Then
                char13 = "22"
            ElseIf char13 = "N" Then
                char13 = "23"
            ElseIf char13 = "O" Then
                char13 = "24"
            ElseIf char13 = "P" Then
                char13 = "25"
            ElseIf char13 = "Q" Then
                char13 = "26"
            ElseIf char13 = "R" Then
                char13 = "27"
            ElseIf char13 = "S" Then
                char13 = "28"
            ElseIf char13 = "T" Then
                char13 = "29"
            ElseIf char13 = "U" Then
                char13 = "30"
            ElseIf char13 = "V" Then
                char13 = "31"
            ElseIf char13 = "W" Then
                char13 = "32"
            ElseIf char13 = "X" Then
                char13 = "33"
            ElseIf char13 = "Y" Then
                char13 = "34"
            ElseIf char13 = "Z" Then
                char13 = "35"
            End If

            If char14 = "A" Then
                char14 = "10"
            ElseIf char14 = "B" Then
                char14 = "11"
            ElseIf char14 = "C" Then
                char14 = "12"
            ElseIf char14 = "D" Then
                char14 = "13"
            ElseIf char14 = "E" Then
                char14 = "14"
            ElseIf char14 = "F" Then
                char14 = "15"
            ElseIf char14 = "G" Then
                char14 = "16"
            ElseIf char14 = "H" Then
                char14 = "17"
            ElseIf char14 = "I" Then
                char14 = "18"
            ElseIf char14 = "J" Then
                char14 = "19"
            ElseIf char14 = "K" Then
                char14 = "20"
            ElseIf char14 = "L" Then
                char14 = "21"
            ElseIf char14 = "M" Then
                char14 = "22"
            ElseIf char14 = "N" Then
                char14 = "23"
            ElseIf char14 = "O" Then
                char14 = "24"
            ElseIf char14 = "P" Then
                char14 = "25"
            ElseIf char14 = "Q" Then
                char14 = "26"
            ElseIf char14 = "R" Then
                char14 = "27"
            ElseIf char14 = "S" Then
                char14 = "28"
            ElseIf char14 = "T" Then
                char14 = "29"
            ElseIf char14 = "U" Then
                char14 = "30"
            ElseIf char14 = "V" Then
                char14 = "31"
            ElseIf char14 = "W" Then
                char14 = "32"
            ElseIf char14 = "X" Then
                char14 = "33"
            ElseIf char14 = "Y" Then
                char14 = "34"
            ElseIf char14 = "Z" Then
                char14 = "35"
            End If

            If char15 = "A" Then
                char15 = "10"
            ElseIf char15 = "B" Then
                char15 = "11"
            ElseIf char15 = "C" Then
                char15 = "12"
            ElseIf char15 = "D" Then
                char15 = "13"
            ElseIf char15 = "E" Then
                char15 = "14"
            ElseIf char15 = "F" Then
                char15 = "15"
            ElseIf char15 = "G" Then
                char15 = "16"
            ElseIf char15 = "H" Then
                char15 = "17"
            ElseIf char15 = "I" Then
                char15 = "18"
            ElseIf char15 = "J" Then
                char15 = "19"
            ElseIf char15 = "K" Then
                char15 = "20"
            ElseIf char15 = "L" Then
                char15 = "21"
            ElseIf char15 = "M" Then
                char15 = "22"
            ElseIf char15 = "N" Then
                char15 = "23"
            ElseIf char15 = "O" Then
                char15 = "24"
            ElseIf char15 = "P" Then
                char15 = "25"
            ElseIf char15 = "Q" Then
                char15 = "26"
            ElseIf char15 = "R" Then
                char15 = "27"
            ElseIf char15 = "S" Then
                char15 = "28"
            ElseIf char15 = "T" Then
                char15 = "29"
            ElseIf char15 = "U" Then
                char15 = "30"
            ElseIf char15 = "V" Then
                char15 = "31"
            ElseIf char15 = "W" Then
                char15 = "32"
            ElseIf char15 = "X" Then
                char15 = "33"
            ElseIf char15 = "Y" Then
                char15 = "34"
            ElseIf char15 = "Z" Then
                char15 = "35"
            End If


            If char16 = "A" Then
                char16 = "10"
            ElseIf char16 = "B" Then
                char16 = "11"
            ElseIf char16 = "C" Then
                char16 = "12"
            ElseIf char16 = "D" Then
                char16 = "13"
            ElseIf char16 = "E" Then
                char16 = "14"
            ElseIf char16 = "F" Then
                char16 = "15"
            ElseIf char16 = "G" Then
                char16 = "16"
            ElseIf char16 = "H" Then
                char16 = "17"
            ElseIf char16 = "I" Then
                char16 = "18"
            ElseIf char16 = "J" Then
                char16 = "19"
            ElseIf char16 = "K" Then
                char16 = "20"
            ElseIf char16 = "L" Then
                char16 = "21"
            ElseIf char16 = "M" Then
                char16 = "22"
            ElseIf char16 = "N" Then
                char16 = "23"
            ElseIf char16 = "O" Then
                char16 = "24"
            ElseIf char16 = "P" Then
                char16 = "25"
            ElseIf char16 = "Q" Then
                char16 = "26"
            ElseIf char16 = "R" Then
                char16 = "27"
            ElseIf char16 = "S" Then
                char16 = "28"
            ElseIf char16 = "T" Then
                char16 = "29"
            ElseIf char16 = "U" Then
                char16 = "30"
            ElseIf char16 = "V" Then
                char16 = "31"
            ElseIf char16 = "W" Then
                char16 = "32"
            ElseIf char16 = "X" Then
                char16 = "33"
            ElseIf char16 = "Y" Then
                char16 = "34"
            ElseIf char16 = "Z" Then
                char16 = "35"
            End If

            If char17 = "A" Then
                char17 = "10"
            ElseIf char17 = "B" Then
                char17 = "11"
            ElseIf char17 = "C" Then
                char17 = "12"
            ElseIf char17 = "D" Then
                char17 = "13"
            ElseIf char17 = "E" Then
                char17 = "14"
            ElseIf char17 = "F" Then
                char17 = "15"
            ElseIf char17 = "G" Then
                char17 = "16"
            ElseIf char17 = "H" Then
                char17 = "17"
            ElseIf char17 = "I" Then
                char17 = "18"
            ElseIf char17 = "J" Then
                char17 = "19"
            ElseIf char17 = "K" Then
                char17 = "20"
            ElseIf char17 = "L" Then
                char17 = "21"
            ElseIf char17 = "M" Then
                char17 = "22"
            ElseIf char17 = "N" Then
                char17 = "23"
            ElseIf char17 = "O" Then
                char17 = "24"
            ElseIf char17 = "P" Then
                char17 = "25"
            ElseIf char17 = "Q" Then
                char17 = "26"
            ElseIf char17 = "R" Then
                char17 = "27"
            ElseIf char17 = "S" Then
                char17 = "28"
            ElseIf char17 = "T" Then
                char17 = "29"
            ElseIf char17 = "U" Then
                char17 = "30"
            ElseIf char17 = "V" Then
                char17 = "31"
            ElseIf char17 = "W" Then
                char17 = "32"
            ElseIf char17 = "X" Then
                char17 = "33"
            ElseIf char17 = "Y" Then
                char17 = "34"
            ElseIf char17 = "Z" Then
                char17 = "35"
            End If
            If char18 = "A" Then
                char18 = "10"
            ElseIf char18 = "B" Then
                char18 = "11"
            ElseIf char18 = "C" Then
                char18 = "12"
            ElseIf char18 = "D" Then
                char18 = "13"
            ElseIf char18 = "E" Then
                char18 = "14"
            ElseIf char18 = "F" Then
                char18 = "15"
            ElseIf char18 = "G" Then
                char18 = "16"
            ElseIf char18 = "H" Then
                char18 = "17"
            ElseIf char18 = "I" Then
                char18 = "18"
            ElseIf char18 = "J" Then
                char18 = "19"
            ElseIf char18 = "K" Then
                char18 = "20"
            ElseIf char18 = "L" Then
                char18 = "21"
            ElseIf char18 = "M" Then
                char18 = "22"
            ElseIf char18 = "N" Then
                char18 = "23"
            ElseIf char18 = "O" Then
                char18 = "24"
            ElseIf char18 = "P" Then
                char18 = "25"
            ElseIf char18 = "Q" Then
                char18 = "26"
            ElseIf char18 = "R" Then
                char18 = "27"
            ElseIf char18 = "S" Then
                char18 = "28"
            ElseIf char18 = "T" Then
                char18 = "29"
            ElseIf char18 = "U" Then
                char18 = "30"
            ElseIf char18 = "V" Then
                char18 = "31"
            ElseIf char18 = "W" Then
                char18 = "32"
            ElseIf char18 = "X" Then
                char18 = "33"
            ElseIf char18 = "Y" Then
                char18 = "34"
            ElseIf char18 = "Z" Then
                char18 = "35"
            End If
            If char19 = "A" Then
                char19 = "10"
            ElseIf char19 = "B" Then
                char19 = "11"
            ElseIf char19 = "C" Then
                char19 = "12"
            ElseIf char19 = "D" Then
                char19 = "13"
            ElseIf char19 = "E" Then
                char19 = "14"
            ElseIf char19 = "F" Then
                char19 = "15"
            ElseIf char19 = "G" Then
                char19 = "16"
            ElseIf char19 = "H" Then
                char19 = "17"
            ElseIf char19 = "I" Then
                char19 = "18"
            ElseIf char19 = "J" Then
                char19 = "19"
            ElseIf char19 = "K" Then
                char19 = "20"
            ElseIf char19 = "L" Then
                char19 = "21"
            ElseIf char19 = "M" Then
                char19 = "22"
            ElseIf char19 = "N" Then
                char19 = "23"
            ElseIf char19 = "O" Then
                char19 = "24"
            ElseIf char19 = "P" Then
                char19 = "25"
            ElseIf char19 = "Q" Then
                char19 = "26"
            ElseIf char19 = "R" Then
                char19 = "27"
            ElseIf char19 = "S" Then
                char19 = "28"
            ElseIf char19 = "T" Then
                char19 = "29"
            ElseIf char19 = "U" Then
                char19 = "30"
            ElseIf char19 = "V" Then
                char19 = "31"
            ElseIf char19 = "W" Then
                char19 = "32"
            ElseIf char19 = "X" Then
                char19 = "33"
            ElseIf char19 = "Y" Then
                char19 = "34"
            ElseIf char19 = "Z" Then
                char19 = "35"
            End If
            If char20 = "A" Then
                char20 = "10"
            ElseIf char20 = "B" Then
                char20 = "11"
            ElseIf char20 = "C" Then
                char20 = "12"
            ElseIf char20 = "D" Then
                char20 = "13"
            ElseIf char20 = "E" Then
                char20 = "14"
            ElseIf char20 = "F" Then
                char20 = "15"
            ElseIf char20 = "G" Then
                char20 = "16"
            ElseIf char20 = "H" Then
                char20 = "17"
            ElseIf char20 = "I" Then
                char20 = "18"
            ElseIf char20 = "J" Then
                char20 = "19"
            ElseIf char20 = "K" Then
                char20 = "20"
            ElseIf char20 = "L" Then
                char20 = "21"
            ElseIf char20 = "M" Then
                char20 = "22"
            ElseIf char20 = "N" Then
                char20 = "23"
            ElseIf char20 = "O" Then
                char20 = "24"
            ElseIf char20 = "P" Then
                char20 = "25"
            ElseIf char20 = "Q" Then
                char20 = "26"
            ElseIf char20 = "R" Then
                char20 = "27"
            ElseIf char20 = "S" Then
                char20 = "28"
            ElseIf char20 = "T" Then
                char20 = "29"
            ElseIf char20 = "U" Then
                char20 = "30"
            ElseIf char20 = "V" Then
                char20 = "31"
            ElseIf char20 = "W" Then
                char20 = "32"
            ElseIf char20 = "X" Then
                char20 = "33"
            ElseIf char20 = "Y" Then
                char20 = "34"
            ElseIf char20 = "Z" Then
                char20 = "35"
            End If

            '----- if none of the characters are spaces:
            If char1 <> " " And char2 <> " " And char3 <> " " And char4 <> " " And char5 <> " " And char6 <> " " And char7 <> " " And char8 <> " " And char9 <> " " And char10 <> " " And char11 <> " " And char12 <> " " And char13 <> " " And char14 <> " " And char15 <> " " And char16 <> " " And char17 <> " " And char18 <> " " And char19 <> " " And char20 <> " " Then

                '------- Now that all our values are numeric, we can add them as integers within the same group they where entered in....(you could change this up too... it'd get complex quick though)
                Dim Group1 As Integer = Int(char5) + Int(char4) + Int(char3) + Int(char2) + Int(char1)
                Dim Group2 As Integer = Int(char10) + Int(char9) + Int(char8) + Int(char7) + Int(char6)
                Dim Group3 As Integer = Int(char15) + Int(char14) + Int(char13) + Int(char12) + Int(char11)
                Dim Group4 As Integer = Int(char20) + Int(char19) + Int(char18) + Int(char17) + Int(char16)

                '--------- I would take everything other than the nested if on this part out if you actually use the code in your program.  The good\bad labels and text boxes are just for your own testing. -----------
                TextBox_Result.Text = Group1
                TextBox_Result2.Text = Group2
                TextBox_Result3.Text = Group3
                TextBox_Result4.Text = Group4
                '-----All fields in the end will equal 96 for this sample.  All groups could equal 24 if you like.  BUT we'll mix it up to avoid using the same set accross all fields.  we -8 from one field, and must add it to another.
                'group a must = 24
                If Group1 = 24 Then
                    Label_GroupA_Val.Text = "Good"
                    'group b must = 16
                    If Group2 = 16 Then
                        Label_GroupB_Val.Text = "Good"
                        'group c must = 24
                        If Group3 = 24 Then
                            Label_GroupC_Val.Text = "Good"
                            'group d must = 32
                            If Group4 = 32 Then
                                Label_GroupD_Val.Text = "Good"
                                '------------------- If all four of our seperate groups add up to 96(this can be changed), validate!
                                If Group1 + Group2 + Group3 + Group4 = 96 Then
                                    Label_FinalVal.ForeColor = Color.Green
                                    Label_FinalVal.Text = "Validated"
                                    '---------- my.settings.ValidationCheckSetting=true
                                Else
                                    Label_FinalVal.ForeColor = Color.Red
                                    Label_FinalVal.Text = "Invalid Key"
                                End If
                            Else
                                Label_GroupD_Val.Text = "Bad"
                                Label_FinalVal.ForeColor = Color.Red
                                Label_FinalVal.Text = "Invalid Key"
                            End If
                        Else
                            Label_GroupC_Val.Text = "Bad"
                            Label_FinalVal.ForeColor = Color.Red
                            Label_FinalVal.Text = "Invalid Key"
                        End If
                    Else
                        Label_GroupB_Val.Text = "Bad"
                        Label_FinalVal.ForeColor = Color.Red
                        Label_FinalVal.Text = "Invalid Key"
                    End If
                Else
                    Label_GroupA_Val.Text = "Bad"
                    Label_FinalVal.ForeColor = Color.Red
                    Label_FinalVal.Text = "Invalid Key"
                End If
                '---^^^^^^^^^^^^^^^^^^^^ END OF TO TAKE OUT ^^^^^^^^^^^^^^^^^--
            Else
                Label_FinalVal.ForeColor = Color.Red
                Label_FinalVal.Text = "Key is not valid, check key for spaces."
            End If
        Else
            Label_FinalVal.ForeColor = Color.Red
            Label_FinalVal.Text = "Key is not valid, please check the key and try again"
        End If
    End Sub
End Class
```


----------



## eidairaman1 (Sep 14, 2011)

Neuromancer said:


> Homework is best done on your own. Otherwise you are a stupid f**k. You would not have been given it as a problem if you were not taught it. School is funny that way. Unless it is extra credit, then use google and deduce it on your own.
> 
> TBH: Search engines should be taught in school. Each is different and google has gotten dumber.



No reason to insult the guy


----------



## shuggans (Sep 14, 2011)

Ford, Project file is above.  Basically what I need is to write a program that gives every possibility of 5 numbers adding up to 50. (or 32 if you look at the sample code.)  The license key check checks on 4 sets of 5 characters(letters get assigned a numerical value).  In each set, the five numeric values are added.  I need a way to calculate out every possible combination of 5 numbers adding up to 32.
I'll probably end up keeping them in a database. If anyone would like to work with me on the license key program, I'd be down for a joint TPU venture in creating an awesome piece of open source software by TPU members! We could have this check across a database, etc. Just an idea.


----------



## eidairaman1 (Sep 14, 2011)

hey shuggans, combine your 2 posts into 1, theres an edit button to do so bro, part of rules here,


----------



## LAN_deRf_HA (Sep 14, 2011)

Neuromancer said:


> Homework is best done on your own. Otherwise you are a stupid f**k. You would not have been given it as a problem if you were not taught it. School is funny that way. Unless it is extra credit, then use google and deduce it on your own.
> 
> TBH: Search engines should be taught in school. Each is different and google has gotten dumber.



I'm guessing someone took your banana sticker with outsourced work.


----------



## FordGT90Concept (Sep 14, 2011)

If my code is correct, there are 300,951 combinations that would result in a sum of 50...

```
using System;
using System.Collections.Generic;

namespace BruteForce
{
    class Program
    {
        static void Main(string[] args)
        {
            List<int[]> output = new List<int[]>();
            int count = 0;
            for (int a = 0; a < 36; a++)
            {
                for (int b = 0; b < 36; b++)
                {
                    for (int c = 0; c < 36; c++)
                    {
                        for (int d = 0; d < 36; d++)
                        {
                            for (int e = 0; e < 36; e++)
                            {
                                if (a + b + c + d + e == 50)
                                {
                                    [b]int[] temp = new int[] { a, b, c, d, e };
                                    bool good = true;
                                    for (int x = 0; x < temp.Length; x++)
                                    {
                                        for (int y = 0; y < temp.Length; y++)
                                        {
                                            if ((y != x) && (temp[y] == temp[x]))
                                                good = false;
                                        }
                                    }
                                    if (good)
                                        output.Add(temp);[/b]
                                }
                                count++;
                            }
                        }
                    }
                }
            }
            Console.WriteLine(output.Count);
            Console.WriteLine(count);
            Console.ReadKey();
        }
    }
}
```
That's C# but you should be able to get the jist of what it is doing (looping all possibilities for all digits).

This code is correct because you have 36^5 possibilities and that is how many times (60,466,176) the "if" statement is hit.


Edit: And yeah, your code could be condensed into about 50 lines by using an enumerator and functions.


----------



## shuggans (Sep 14, 2011)

Sweet, thanks Ford, you have no idea how much your help is appreciated.  I'll see if I can implement this tomorrow.  And yeah I know, just seeing if my concept would work and wanted to get it in code quick.  I had a hard time figuring out a method to do it and code snippets are hard to find for it so I figured i'd share with TPU.


----------



## shuggans (Sep 14, 2011)

*Hmmm*

Well, that won't work.  each group contains #'s and letters.  -Ford, I tried that code, It generates one number: 30951
This is a toughy.

Basically.  We have the following rules:
Each represented number can only occupy one character space.  

In the program any number that uses the following number needs to equal its corresponding letter:
10 = a
11 = b
12 = c
13 = d
14 = e
15 = f
16 = g
17 = h
18 = i
19 = j
20 = k
21 = l
22 = m
23 = n
24 = o
25 = p
26 = q
27 = r
28 = s
29 = t
30 = u
31 = v
32 = w
33 = x
34 = y
35 = z

So on the output side we end up with 0-9 A-Z, max combinations of all those using only 5 digits, which all have to add up to 50


----------



## Neuromancer (Sep 14, 2011)

eidairaman1 said:


> No reason to insult the guy



Yes I apologized to him via PM, I was wearing my asshat last night.


----------



## FordGT90Concept (Sep 14, 2011)

In which case, add an extra conditional.  I updated the code in my previous post (bolded the primary change).  Result is 203,280

That's not the most efficient code because it is double checking the "temp" array but performance really isn't an issue so I left it be.


----------



## eidairaman1 (Sep 14, 2011)

Neuromancer said:


> Yes I apologized to him via PM, I was wearing my asshat last night.



ya n funny not many use that term much anymore. ok thats cool you did


Hmm that looks like hexadecimal coding below



shuggans said:


> Well, that won't work.  each group contains #'s and letters.  -Ford, I tried that code, It generates one number: 30951
> This is a toughy.
> 
> Basically.  We have the following rules:
> ...


----------



## FordGT90Concept (Sep 15, 2011)

Hex is only 0-F, he's just substituting characters for numbers.


----------



## Kreij (Sep 17, 2011)

@Shuggans ...
Are you sure you want to use your current method for generating keys? 
It's not very secure at all (no offense intended) as if someone figures out that the key segments all add up to 50 (or whatever) they now can easily generate all of you keys.

Since you need to do key validation without a hardware device (dongle) or internet verification, what I would do is randomly generate the first key segment based on a seed and salt value that only you know. Then generate the following segments based on a seed and salt algorithm that is derived from the preceeding segment. That way someone would have to not only know the original seed and salt values, but would also have to figure out the derivitive algorithm to generate the following segments (however many you may choose).

It's not as hard as it sounds and the odds of someone figuring it out, or just by chance entering a correct key, is virtually zero.

In my Key-Z utility, the user has to enter a password and PIN. If you don't know those two items it is virtually impossible to decrypt the information contained in the file. 
Your key validation routines could work in a similar manner.

Just trying to help.


----------



## shuggans (Sep 18, 2011)

No, my program checks against a database for genuine keys, and locks the key out once used by an IP.  There are other checks I have in place, this is just what I came up with to get it rolling.  You can modify this by checking that they = different #'s, having each set differ in the # of characters, changing what letter = what number, etc.  I do recommend using other measures along with this, such as checking against a database if the key appears valid.  I threw my keygen idea out. after a day of running it had generated over 4 million keys into a database, and was probably not even a 1/4 of the way done.  I took a block of keys out of those and am making those the "genuine" keys.  This was jsut what I came up with to get the ball rolling; what I was stuck on when looking at how to do this.


----------



## Kreij (Sep 18, 2011)

That's fine, Shug. I wasn't sure what you were doing and was just commenting on a methd of key validation that could occur during the installation of the application without having to access any external information. It could also easily be adapted to include module access infromation (someone only bought less than total modules available).

When I wrote the keygen portion of Key-Z it was more of a proof of concept than any kind of commercial grade software. It will generate any number of non-repeating keys that you want, and if you need more it will generate them and ensure they are non-repeating when compared to the original batch. I wrote it that way with the consideration that not everyone needs 4 million keys, but their original batch might prove not to be enough over time.

I'm not critisizing your method or anything like that ...  just offering more ideas and options.


----------



## FordGT90Concept (Sep 18, 2011)

Beware that many users can have the same public IP addressed (NAT/tunnelling), IP addresses can changed frequently (dynamic), and people often have to reinstall software because they changed computers or formatted their own computer.  User accounts are the better route to go so they're unique to the individual.


----------



## shuggans (Sep 19, 2011)

I know kreij, I appreciate it.  I'm actually interested in your idea


----------

