Kotlin加密算法实战1

1 ASCII编码

在这里插入图片描述

    //获取字符ascii编码
    val c = 'a'
    val value: Int = c.toInt()
    println(value)
    //获取字符串ascii
    val str = "I love you"
    //遍历获取每一个字符的ascii编码
    val array = str.toCharArray()
    for (ch in array) {
//        println(ch)
        println(ch.toInt())
    }

使用StringBuilder:

    val stringBuilder = StringBuilder()
    for (ch in array) {
        val result = ch.toInt();
//        stringBuilder.append(result.toString() + " ")
        stringBuilder.append("$result ")
    }
    println(stringBuilder.toString())

使用with:

    with(stringBuilder){
        for (ch in array) {
            val result = ch.toInt();
            this.append("$result ")
        }
        println(this.toString())
    }

再次改进:

    with(StringBuilder()){
        for (ch in array) {
            val result = ch.toInt();
            append("$result ")
        }
        println(toString())
    }

打印:73 32 108 111 118 101 32 121 111 117


2 凯撒加密

参考:
https://baike.baidu.com/item/%E6%81%BA%E6%92%92%E5%AF%86%E7%A0%81/4905284?fr=aladdin

class CaesarCrypt {
    /**
     * 加密
     * input:原文
     * key:秘钥
     */
    fun encrypt(input: String, key: Int): String {
        val charArray = input.toCharArray()
        return with(StringBuilder()) {
            charArray.forEach {
                //遍历每个字符,对ascii偏移
                val c = it
                //获取字符ascii
                var ascii = c.toInt()
                //移动
                ascii += key
                //转成字符
                val result = ascii.toChar()
                append(result)
            }
            toString()
        }
    }

    /**
     * 解密
     * input:密文
     * key:秘钥
     */
    fun decrypt(input: String, key: Int): String {
        val charArray = input.toCharArray()
        return with(StringBuilder()) {
            charArray.forEach {
                //遍历每个字符,对ascii偏移
                val c = it
                //获取字符ascii
                var ascii = c.toInt()
                //移动
                ascii -= key
                //转成字符
                val result = ascii.toChar()
                append(result)
            }
            toString()
        }
    }

}

fun main(args: Array<String>) {
    val command = "I love you"
    val key = 2//秘钥
    val encrypt = CaesarCrypt().encrypt(command, key)
    val decrypt = CaesarCrypt().decrypt(encrypt, key)
    println(encrypt)
    println(decrypt)
}

打印:
K"nqxg"{qw
I love you


3 Byte和bit

  • Byte:字节,数据存储单位
  • bit:比特,又名 位。一个位要么0,要么1,数据传输的单位
  • 一个字节占8位。
  val ch = 'A'
    //获取字符ascii
    val ascii = ch.toInt()
    println(ascii)//65

    //二进制
    val binary = Integer.toBinaryString(ascii)
    println(binary)//1000001,8位,一个英文字符占1个字节
发布了383 篇原创文章 · 获赞 54 · 访问量 21万+

猜你喜欢

转载自blog.csdn.net/hongxue8888/article/details/103819893
今日推荐