Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
58
Task/Bifid-cipher/Wren/bifid-cipher.wren
Normal file
58
Task/Bifid-cipher/Wren/bifid-cipher.wren
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
import "./str" for Str
|
||||
import "./seq" for Lst
|
||||
|
||||
class Bifid {
|
||||
static encrypt(polybius, message) {
|
||||
message = Str.upper(message).replace("J", "I")
|
||||
var rows = []
|
||||
var cols = []
|
||||
for (c in message) {
|
||||
var ix = polybius.indexOf(c)
|
||||
if (ix == -1) continue
|
||||
rows.add((ix/5).floor + 1)
|
||||
cols.add((ix%5) + 1)
|
||||
}
|
||||
var s = ""
|
||||
for (pair in Lst.chunks(rows + cols, 2)) {
|
||||
var ix = (pair[0] - 1) * 5 + pair[1] - 1
|
||||
s = s + polybius[ix]
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
static decrypt(polybius, message) {
|
||||
var rows = []
|
||||
var cols = []
|
||||
for (c in message) {
|
||||
var ix = polybius.indexOf(c)
|
||||
rows.add((ix/5).floor + 1)
|
||||
cols.add((ix%5) + 1)
|
||||
}
|
||||
var lines = Lst.flatten(Lst.zip(rows, cols))
|
||||
var count = lines.count/2
|
||||
rows = lines[0...count]
|
||||
cols = lines[count..-1]
|
||||
var s = ""
|
||||
for (i in 0...count) {
|
||||
var ix = (rows[i] - 1) * 5 + cols[i] - 1
|
||||
s = s + polybius[ix]
|
||||
}
|
||||
return s
|
||||
}
|
||||
}
|
||||
var poly1 = "ABCDEFGHIKLMNOPQRSTUVWXYZ"
|
||||
var poly2 = "BGWKZQPNDSIOAXEFCLUMTHYVR"
|
||||
var poly3 = "PLAYFIREXMBCDGHKNOQSTUVWZ"
|
||||
var polys = [poly1, poly2, poly2, poly3]
|
||||
var msg1 = "ATTACKATDAWN"
|
||||
var msg2 = "FLEEATONCE"
|
||||
var msg3 = "The invasion will start on the first of January"
|
||||
var msgs = [msg1, msg2, msg1, msg3]
|
||||
for (i in 0...msgs.count) {
|
||||
var encrypted = Bifid.encrypt(polys[i], msgs[i])
|
||||
var decrypted = Bifid.decrypt(polys[i], encrypted)
|
||||
System.print("Message : %(msgs[i])")
|
||||
System.print("Encrypted : %(encrypted)")
|
||||
System.print("Decrypted : %(decrypted)")
|
||||
if (i < msgs.count-1) System.print()
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue