加密算法分为:对称加密和非对称加密
加密算法:凯撒加密,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 八位 一个英文字符占一个字符 }