加密算法入門

加密算法分爲:對稱加密和非對稱加密算法

加密算法:凱撒加密,DES,AES。app

非對稱加密。函數

消息摘要:md5,sha1,sha256加密

數字簽名:SHA256withRSAspa

 

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))
}

 凱撒密碼破解:頻度分析法:code

英文字母是e出現頻率很高blog

1.統計密文出現次數最多的字符md5

2.咱們認爲每一個字符都是由e變來的ci

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 八位 一個英文字符佔一個字符


}
相關文章
相關標籤/搜索