加密算法分爲:對稱加密和非對稱加密算法
加密算法:凱撒加密,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 八位 一個英文字符佔一個字符 }