Solved

# Basic Encryption

Posted on 2006-10-19
239 Views
Hi

how do i convert

a b c d e f g h i j k l m n o p q r s t u v w x y z

to

x y z a b c d e f g h i j k l m n o p q r s t u v w

basically just going back 3 characters

so if i type "narmi" in the textbox and click a button i should get "kxojg"

i think!! :)

thanks

narmi2
0
Question by:narmi2
• 5
• 4
• 2
• +1

LVL 10

Expert Comment

ID: 17767218
dim txt as string="abcd"

for i as integer=0 to origtxt.length-1
txt.chars(i)= asc(txt.chars(i))-3
'you will need to check if >80
next
0

LVL 85

Expert Comment

ID: 17767258
Another way:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim index As Integer
Dim vals() As Char = "abcdefghijklmnopqrstuvwxyz".ToCharArray
Dim input As New System.Text.StringBuilder(TextBox1.Text)
For i As Integer = 0 To input.Length - 1
index = Array.IndexOf(vals, input.Chars(i))
If index <> -1 Then
index = index - 3
If index < 0 Then
index = vals.Length + index
End If
input.Chars(i) = vals(index)
End If
Next
TextBox1.Text = input.ToString
End Sub

This leaves any characters that are not "a-z" intact.
0

LVL 1

Author Comment

ID: 17767404
Idle Mind how would i reverse that?  so it does the opposite?
0

LVL 85

Expert Comment

ID: 17767433
Define opposite?

You mean so that "abc" becomes "def"?
0

LVL 1

Author Comment

ID: 17767444
gangwisch - i get an error with your code saying "property char is read only"
0

LVL 1

Author Comment

ID: 17767458
idel mind,

i mean if i start off with "narmi" and click encrypt button, i get "kyojf"

then i want to click decrypt when "kyojf" is in the box which should give me "narmi" back again.
0

LVL 85

Accepted Solution

Mike Tomlinson earned 500 total points
ID: 17767486
ah...duh...lol!

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim index As Integer
Dim vals() As Char = "abcdefghijklmnopqrstuvwxyz".ToCharArray
Dim input As New System.Text.StringBuilder(TextBox1.Text)
For i As Integer = 0 To input.Length - 1
index = Array.IndexOf(vals, input.Chars(i))
If index <> -1 Then
index = index - 3
If index < 0 Then
index = vals.Length + index
End If
input.Chars(i) = vals(index)
End If
Next
TextBox1.Text = input.ToString
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim index As Integer
Dim vals() As Char = "abcdefghijklmnopqrstuvwxyz".ToCharArray
Dim input As New System.Text.StringBuilder(TextBox1.Text)
For i As Integer = 0 To input.Length - 1
index = Array.IndexOf(vals, input.Chars(i))
If index <> -1 Then
index = index + 3
If index > vals.GetUpperBound(0) Then
index = index - vals.Length
End If
input.Chars(i) = vals(index)
End If
Next
TextBox1.Text = input.ToString
End Sub
0

LVL 1

Author Comment

ID: 17767511
perfec :)
0

LVL 85

Expert Comment

ID: 17767530
Written slightly more intelligently...

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox1.Text = Convert(TextBox1.Text, True)
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
TextBox1.Text = Convert(TextBox1.Text, False)
End Sub

Public Function Convert(ByVal str As String, ByVal Encrypt As Boolean) As String
Dim index As Integer
Dim vals() As Char = "abcdefghijklmnopqrstuvwxyz".ToCharArray
Dim input As New System.Text.StringBuilder(str)
For i As Integer = 0 To input.Length - 1
index = Array.IndexOf(vals, input.Chars(i))
If index <> -1 Then
If Encrypt Then
index = index - 3
If index < 0 Then
index = vals.Length + index
End If
Else
index = index + 3
If index > vals.GetUpperBound(0) Then
index = index - vals.Length
End If
End If
input.Chars(i) = vals(index)
End If
Next
Return input.ToString
End Function
0

LVL 85

Expert Comment

ID: 17767560
If you want actual encryption (with a key that is) then see:
http://www.experts-exchange.com/Programming/Programming_Languages/Dot_Net/Q_21821682.html
0

LVL 7

Expert Comment

ID: 17767599
It's like this but first "narmi" encrypted is "kxojf"

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim index As Integer
Dim vals() As Char = "abcdefghijklmnopqrstuvwxyz".ToCharArray
Dim input As New System.Text.StringBuilder(TextBox1.Text)
For i As Integer = 0 To input.Length - 1
index = Array.IndexOf(vals, input.Chars(i))
If index <> -1 Then
index = index + 3
'If index < 0 Then
'    index = vals.Length + index
'End If
if index > vals.length -1  then
index = index - vals.length
end if
input.Chars(i) = vals(index)
End If
Next
TextBox1.Text = input.ToString
End Sub

I deduced that it's only a matter of reversing the - to +
and checking for the opposite condition for index.
:)
0

LVL 7

Expert Comment

ID: 17767611
sorry i was too late :)
0

## Featured Post

I think the Typed DataTable and Typed DataSet are very good options when working with data, but I don't like auto-generated code. First, I create an Abstract Class for my DataTables Common Code.  This class Inherits from DataTable. Also, it can …
A while ago, I was working on a Windows Forms application and I needed a special label control with reflection (glass) effect to show some titles in a stylish way. I've always enjoyed working with graphics, but it's never too clever to re-invent …
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…
When you create an app prototype with Adobe XD, you can insert system screens -- sharing or Control Center, for example -- with just a few clicks. This video shows you how. You can take the full course on Experts Exchange at http://bit.ly/XDcourse.