第五章 kotlin-凯撒加密算法

第五章 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代码实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值