第五章 kotlin-凯撒加密算法
前言
kotlin-凯撒加密算法。
一、凯撒加密和解密
1.凯撒加密和解密原理
把字母移动一定的位数来实现加密和解密
2.代码实现
代码实现
fun main(agrs:Array<String>) {
val command = "hello world"
val key = 2
val encrypt = CaesarCrypt().encrypt(command,key)
println("凯撒加密结果:${encrypt}")
val decrypt = CaesarCrypt().decrypt(encrypt,key)
println("凯撒解密结果:${decrypt}")
}
/**
* 凯撒加密算法
*
* 把字母移动一定的位数来实现加密和解密
*/
class CaesarCrypt {
/**
* 加密
* @param input 原文
* @param key 秘钥
*/
fun encrypt(input: String, key: Int):String {
val charArray = input.toCharArray()
return with(StringBuffer()) {
charArray.forEach {
//遍历每一个字符,对ascii偏移
val c = it
//获取字符ascii
var ascii = c.toInt()
//移动
ascii += key
//转换字符
val result = ascii.toChar()
append(result)
}
//返回结果
toString()
}
}
/**
* 解密
* @param input 密文
* @param key 秘钥
*/
fun decrypt(input: String, key: Int):String {
val charArray = input.toCharArray()
return with(StringBuffer()) {
charArray.forEach {
//遍历每一个字符,对ascii偏移
val c = it
//获取字符ascii
var ascii = c.toInt()
//反方向移动
ascii -= key
//转换字符
val result = ascii.toChar()
append(result)
}
//返回结果
toString()
}
}
}
二、频度分析法破解凯撒加密算法
1.频度分析法破解凯撒加密算法
例如:对于破解英文文章的加密密文的方法:
假设英文里出现次数最多的字符是e(ascii码为101)。然后最整篇密文中的各个字符,按照出现次数,从高到低排列,那么排在第一位的字符(假设是h),应该就是由字符e经过凯撒加密得到的密文字符。因为,密文字符h的ascii码为104,则104-101 = 3,所以秘钥key等于3。最终即可解密得到原文。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了凯撒加密算法的kotlin代码实现。