Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
78
Task/Chaocipher/Visual-Basic-.NET/chaocipher.vb
Normal file
78
Task/Chaocipher/Visual-Basic-.NET/chaocipher.vb
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
Module Module1
|
||||
|
||||
ReadOnly L_ALPHABET As String = "HXUCZVAMDSLKPEFJRIGTWOBNYQ"
|
||||
ReadOnly R_ALPHABET As String = "PTLNBQDEOYSFAVZKGJRIHWXUMC"
|
||||
|
||||
Enum Mode
|
||||
ENCRYPT
|
||||
DECRYPT
|
||||
End Enum
|
||||
|
||||
Function Exec(text As String, mode As Mode, Optional showSteps As Boolean = False) As String
|
||||
Dim left = L_ALPHABET.ToCharArray()
|
||||
Dim right = R_ALPHABET.ToCharArray()
|
||||
Dim eText(text.Length - 1) As Char
|
||||
Dim temp(25) As Char
|
||||
|
||||
For i = 0 To text.Length - 1
|
||||
If showSteps Then Console.WriteLine("{0} {1}", String.Join("", left), String.Join("", right))
|
||||
Dim index As Integer
|
||||
If mode = Mode.ENCRYPT Then
|
||||
index = Array.IndexOf(right, text(i))
|
||||
eText(i) = left(index)
|
||||
Else
|
||||
index = Array.IndexOf(left, text(i))
|
||||
eText(i) = right(index)
|
||||
End If
|
||||
If i = text.Length - 1 Then Exit For
|
||||
|
||||
'permute left
|
||||
|
||||
For j = index To 25
|
||||
temp(j - index) = left(j)
|
||||
Next
|
||||
For j = 0 To index - 1
|
||||
temp(26 - index + j) = left(j)
|
||||
Next
|
||||
Dim store = temp(1)
|
||||
For j = 2 To 13
|
||||
temp(j - 1) = temp(j)
|
||||
Next
|
||||
temp(13) = store
|
||||
temp.CopyTo(left, 0)
|
||||
|
||||
'permute right
|
||||
|
||||
For j = index To 25
|
||||
temp(j - index) = right(j)
|
||||
Next
|
||||
For j = 0 To index - 1
|
||||
temp(26 - index + j) = right(j)
|
||||
Next
|
||||
store = temp(0)
|
||||
For j = 1 To 25
|
||||
temp(j - 1) = temp(j)
|
||||
Next
|
||||
temp(25) = store
|
||||
store = temp(2)
|
||||
For j = 3 To 13
|
||||
temp(j - 1) = temp(j)
|
||||
Next
|
||||
temp(13) = store
|
||||
temp.CopyTo(right, 0)
|
||||
Next
|
||||
|
||||
Return eText
|
||||
End Function
|
||||
|
||||
Sub Main()
|
||||
Dim plainText = "WELLDONEISBETTERTHANWELLSAID"
|
||||
Console.WriteLine("The original plaintext is : {0}", plainText)
|
||||
Console.WriteLine(vbNewLine + "The left and right alphabets after each permutation during encryption are :" + vbNewLine)
|
||||
Dim cipherText = Exec(plainText, Mode.ENCRYPT, True)
|
||||
Console.WriteLine(vbNewLine + "The ciphertext is : {0}", cipherText)
|
||||
Dim plainText2 = Exec(cipherText, Mode.DECRYPT)
|
||||
Console.WriteLine(vbNewLine + "The recovered plaintext is : {0}", plainText2)
|
||||
End Sub
|
||||
|
||||
End Module
|
||||
Loading…
Add table
Add a link
Reference in a new issue