Data update

This commit is contained in:
Ingy döt Net 2024-10-16 18:07:41 -07:00
parent 81fd053722
commit 52a6ef48dd
10248 changed files with 63654 additions and 6775 deletions

View file

@ -3,49 +3,49 @@ enum
int ENCRYPT, DECRYPT
end
type Chaocipher
text L_ALPHABET = "HXUCZVAMDSLKPEFJRIGTWOBNYQ"
text R_ALPHABET = "PTLNBQDEOYSFAVZKGJRIHWXUMC"
fun exec = text by text value, Chaocipher:Mode mode, logic showSteps
text L_ALPHABET "HXUCZVAMDSLKPEFJRIGTWOBNYQ"
text R_ALPHABET "PTLNBQDEOYSFAVZKGJRIHWXUMC"
fun exec text by text value, Chaocipher:Mode mode, logic showSteps
^|since texts are mutable, we can operate directly on them without the need of Lists|^
text left = *L_ALPHABET # by using the valueOf operator we are sure that the string is copied
text right = *R_ALPHABET
text eText = text(" ", value.length)
text temp = text(" ", 26)
for int i = 0; i < value.length; ++i
text left *L_ALPHABET # by using the valueOf operator we are sure that the string is copied
text right *R_ALPHABET
text eText text(" ", value.length)
text temp text(" ", 26)
for int i 0; i < value.length; ++i
if showSteps do writeLine(left + " " + right) end
int index = 0
if mode == Chaocipher:Mode.ENCRYPT
index = right.find(value[i])
eText[i] = left[index]
int index 0
if mode æ Chaocipher:Mode.ENCRYPT
index right.find(value[i])
eText[i] left[index]
else
index = left.find(value[i])
eText[i] = right[index]
index left.find(value[i])
eText[i] right[index]
end
if i == value.length - 1 do break end
if i æ value.length - 1 do break end
# permute left
for int j = index; j < 26; ++j do temp[j - index] = left[j] end
for int j = 0; j < index; ++j do temp[26 - index + j] = left[j] end
var store = temp[1]
for int j = 2; j < 14; ++j do temp[j - 1] = temp[j] end
temp[13] = store
left = *temp
for int j ← index; j < 26; ++j do temp[j - index] ← left[j] end
for int j ← 0; j < index; ++j do temp[26 - index + j] ← left[j] end
var store temp[1]
for int j ← 2; j < 14; ++j do temp[j - 1] ← temp[j] end
temp[13] store
left *temp
# permute right
for int j = index; j < 26; ++j do temp[j - index] = right[j] end
for int j = 0; j < index; ++j do temp[26 - index + j] = right[j] end
store = temp[0]
for int j = 1; j < 26; ++j do temp[j - 1] = temp[j] end
temp[25] = store
store = temp[2]
for int j = 3; j < 14; ++j do temp[j - 1] = temp[j] end
temp[13] = store
right = *temp
for int j ← index; j < 26; ++j do temp[j - index] ← right[j] end
for int j ← 0; j < index; ++j do temp[26 - index + j] ← right[j] end
store temp[0]
for int j ← 1; j < 26; ++j do temp[j - 1] ← temp[j] end
temp[25] store
store temp[2]
for int j ← 3; j < 14; ++j do temp[j - 1] ← temp[j] end
temp[13] store
right *temp
end
return eText
end
var plainText = "WELLDONEISBETTERTHANWELLSAID"
writeLine("The original plaintext is : " + plainText)
writeLine(EOL + "The left and right alphabets after each permutation during encryption are :" + EOL)
var cipherText = exec(plainText, Chaocipher:Mode.ENCRYPT, true)
writeLine(EOL + "The ciphertext is : " + cipherText)
var plainText2 = exec(cipherText, Chaocipher:Mode.DECRYPT, false)
writeLine(EOL + "The recovered plaintext is : " + plainText2)
var plainText "WELLDONEISBETTERTHANWELLSAID"
writeLine("The original plaintext is : ", plainText)
writeLine(EOL, "The left and right alphabets after each permutation during encryption are :", EOL)
var cipherText exec(plainText, Chaocipher:Mode.ENCRYPT, true)
writeLine(EOL, "The ciphertext is : ", cipherText)
var plainText2 exec(cipherText, Chaocipher:Mode.DECRYPT, false)
writeLine(EOL, "The recovered plaintext is : ", plainText2)