Public Class Form1
Dim currentfile As String
Public Const Crypt As Boolean = True
Public Const Decrypt As Boolean = False
Dim mode As Boolean
Public Function SommaChar(ByVal s As String) As Int64
Dim i As Int32
Dim result As Int64
For i = 0 To s.Length - 1
If i Mod 2 = 0 Then
result = result - Asc(s.Chars(i))
Else
result = result + Asc(s.Chars(i))
End If
Next
Return Math.Abs(result)
End Function
Public Function AlgoritmoSemplice(ByVal cripmode As Boolean, ByVal s As String) As String
Dim i As Int32
Dim result As String
Dim c As Char
If cripmode = Crypt Then
For i = 0 To len(s) - 1
c = Chr(255 - Asc(s.Chars(i)))
result = result & c
Next
Return result
Else
For i = 0 To s.Length - 1
c = Chr(255 - Asc(s.Chars(i)))
result = result & c
Next
Return result
End If
End Function
Public Function AlgoritmoMedio(ByVal cripmode As Boolean, ByVal s As String) As String
Dim i As Int32
Dim result As String
Dim c As Char
If cripmode = Crypt Then
For i = 0 To s.Length - 1
If i Mod 2 = 0 Then
c = Chr(Asc(s.Chars(i)) + i)
Else
c = Chr(Asc(s.Chars(i)) - i)
End If
result = result & c
Next
Return result
Else
For i = 0 To s.Length - 1
If i Mod 2 = 0 Then
c = Chr(Asc(s.Chars(i)) - i)
Else
c = Chr(Asc(s.Chars(i)) + i)
End If
result = result & c
Next
Return result
End If
End Function
Public Function AlgoritmoDifficile(ByVal cripmode As Boolean, ByVal s As String) As String
Dim i As Int32
Dim result As String
Dim c As Char
If cripmode = Crypt Then
For i = 0 To s.Length - 1
If Math.Sin(i * 90) > 0 Then
c = Chr((Asc(s.Chars(i)) + (s.Length - 1 + i)))
Else
c = Chr((Asc(s.Chars(i)) - (s.Length - 1 + i)))
End If
result = result & c
Next
Return result
Else
For i = 0 To s.Length - 1
If Math.Sin(i * 90) > 0 Then
c = Chr(Asc(s.Chars(i)) - (s.Length - 1 + i))
Else
c = Chr(Asc(s.Chars(i)) + (s.Length - 1 + i))
End If
Next
Return result
End If
End Function
Public Function AlgoritmoAChiave(ByVal cripmode As Boolean, ByVal s As String, ByVal key As String) As String
Dim i As Int32
Dim result As String
Dim c As Char
Dim somma As Int64
somma = SommaChar(key)
If cripmode = Crypt Then
For i = 0 To s.Length - 1
c = Chr((Asc(s.Chars(i)) + somma) Mod 255)
result = result & c
Next
Return result
Else
For i = 0 To s.Length - 1
c = Chr(Asc(s.Chars(i)) - (somma Mod 255))
result = result & c
Next
Return result
End If
End Function
Private Sub sfoglia_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles sfoglia.Click
If apri.ShowDialog = DialogResult.OK Then
nome_f.Text = apri.FileName
currentfile = nome_f.Text
End If
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
mode = Crypt
esegui()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
mode = Decrypt
esegui()
End Sub
Public Sub esegui()
Dim r As New System.IO.StreamReader(currentfile)
Dim w As New System.IO.StreamWriter(currentfile & ".cry")
Dim s, o, chi As String
Dim index, size As Double
If algor.SelectedIndex = 3 Then
chi = InputBox("Inserire la chiave di criptazione/decriptazione:", "Chiave")
End If
size = FileLen(currentfile)
index = 0
While index < size
s = r.ReadLine
Select Case algor.SelectedIndex
Case 0 : o = AlgoritmoSemplice(mode, s)
Case 1 : o = AlgoritmoMedio(mode, s)
Case 2 : o = AlgoritmoDifficile(mode, s)
Case 3 : o = AlgoritmoAChiave(mode, s, chi)
End Select
w.WriteLine(o)
index += Len(s)
ProgressBar1.Value = 100 * index / size
End While
r.Close()
w.Close()
r = Nothing
w = Nothing
MsgBox("Operazione completata. File: " & currentfile & ".cry", MsgBoxStyle.Information, "Fine")
End Sub
End Class