Playfair cipher: Difference between revisions

Content added Content deleted
Line 1,126: Line 1,126:
encod = Dict()
encod = Dict()


# Map pairs in same row of matrix m.
# Map pairs in same row or same column of matrix m.
for i in 1:5, j in 1:5, k in 1:5
for i in 1:5, j in 1:5, k in 1:5
if j != k
if j != k
encod[m[i, j] * m[i, k]] = m[i, mod1(j + 1, 5)] * m[i, mod1(k + 1, 5)]
encod[m[i, j] * m[i, k]] = m[i, mod1(j + 1, 5)] * m[i, mod1(k + 1, 5)]
end
end
end

# Map pairs in same column of matrix m.
for j in 1:5, i in 1:5, k in 1:5
if i != k
if i != k
encod[m[i, j] * m[k, j]] = m[mod1(i + 1, 5), j] * m[mod1(k + 1, 5), j]
encod[m[i, j] * m[k, j]] = m[mod1(i + 1, 5), j] * m[mod1(k + 1, 5), j]
end
end
# Map pairs not on same row or same column.
end
for l in 1:5

# Map pairs not on same row or same column.
if i != k && j != l
for (i1, j1, i2, j2) in [(a, b, c, d) for a in 1:5, b in 1:5, c in 1:5, d in 1:5]
encod[m[i, j] * m[k, l]] = m[i, l] * m[k, j]
if i1 != i2 && j1 != j2
end
encod[m[i1, j1] * m[i2, j2]] = m[i1, j2] * m[i2, j1]
end
end
end
end