• 加密算法入门


    加密算法分为:对称加密和非对称加密

    加密算法:凯撒加密,DES,AES。

    非对称加密。

    消息摘要:md5,sha1,sha256

    数字签名:SHA256withRSA

    package cn.cas
    
    /**
     * 阿斯克码
     */
    fun main(args: Array<String>) {
        //获取字符串
        val c:Char='a'
        //转换十进制
        val value:Int=c.toInt()
       // print(value)
        val str="I love you"
        val array=str.toCharArray()
        var bu=StringBuffer()
        for(ch in array){
            val result=ch.toInt()
            bu.append(result.toString()+" ")
    
        }//73 32 108 111 118 101 32 121 111 117
        print(bu.toString())//转换10进制
    
    }
    package cn.cas
    
    class CaesarCrypt{
        /**
         * 解密算法
         * @param command 加密源
         * @param key 加密秘钥
         */
        fun decrypt(command:String,key:Int):String{
            var charArray= command.toCharArray()
            //高阶函数
            return  with(StringBuffer()){
                charArray.forEach {
                    //移动字符
                    val c=it
                    //获取支付ascii
                    var ascii = c.toInt()
    
                    ascii -=key
                    //转换成字符
                    val result= ascii.toChar()
                    append(result)//B
                }
                toString()
            }
        }
              /**
             * 加密算法
             * @param command 加密源
             * @param key 加密秘钥
             */
            fun encrypt(command:String,key:Int):String {
                  var charArray = command.toCharArray()
                  //高阶函数
                  return with(StringBuffer()) {
                      charArray.forEach {
                          //移动字符
                          val c = it
                          //获取支付ascii
                          var ascii = c.toInt()
    
                          ascii += key
                          //转换成字符
                          val result = ascii.toChar()
                          append(result)//B
                      }
                      toString()
                  }
    
    
              }
    }
    /**
     * 凯撒密码
     */
    fun main(args: Array<String>) {
        //命令 加密
        var command="I love you"
        //秘钥
        var key=1
    //加密
        println(CaesarCrypt().encrypt(command,key))
        //加密后
        var a=CaesarCrypt().encrypt(command,key)
       //解密
        println(CaesarCrypt().decrypt(a,key))
    }

     凯撒密码破解:频度分析法:

    英文字母是e出现频率很高

    1.统计密文出现次数最多的字符

    2.我们认为每个字符都是由e变来的

    3.通过码表返推加密次数

    4.生成多个备份文件,哪个解析后能读懂就是破解后的文件了

    package cn.cas
    
    fun main(args: Array<String>) {
        val ch:Char='A'
        //获取字符ascii
        var asill=ch.toInt()
    
        //转换二进制
       val binary= Integer.toBinaryString(asill)
        println(binary)//1000001 八位 一个英文字符占一个字符
    
    
    }
  • 相关阅读:
    动态规划之解决01背包问题 【转载】
    暴力搜索解0-1背包问题 【转载】
    回溯法之地图着色
    贪心算法之最小生成树
    贪心算法之最短路径
    HMM隐马尔科夫模型
    变分贝叶斯
    Leetcode好的微博
    HMM隐马尔科夫模型浅析
    向量的协方差矩阵浅析
  • 原文地址:https://www.cnblogs.com/q1359720840/p/10603275.html
Copyright © 2020-2023  润新知