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个字节
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值