34 lines
813 B
Scala
34 lines
813 B
Scala
object Vigenere {
|
|
def encrypt(msg: String, key: String) : String = {
|
|
var result: String = ""
|
|
var j = 0
|
|
|
|
for (i <- 0 to msg.length - 1) {
|
|
val c = msg.charAt(i)
|
|
if (c >= 'A' && c <= 'Z') {
|
|
result += ((c + key.charAt(j) - 2 * 'A') % 26 + 'A').toChar
|
|
j = (j + 1) % key.length
|
|
}
|
|
}
|
|
|
|
return result
|
|
}
|
|
|
|
def decrypt(msg: String, key: String) : String = {
|
|
var result: String = ""
|
|
var j = 0
|
|
|
|
for (i <- 0 to msg.length - 1) {
|
|
val c = msg.charAt(i)
|
|
if (c >= 'A' && c <= 'Z') {
|
|
result += ((c - key.charAt(j) + 26) % 26 + 'A').toChar
|
|
j = (j + 1) % key.length
|
|
}
|
|
}
|
|
|
|
return result
|
|
}
|
|
}
|
|
|
|
println("Encrypt text ABC => " + Vigenere.encrypt("ABC", "KEY"))
|
|
println("Decrypt text KFA => " + Vigenere.decrypt("KFA", "KEY"))
|