当前位置:编程学习 > JAVA >>

没事模仿各种大神写了个凯撒算法和des算法,网络安全类的

package com.lin.kaisa;

/**  
* @author linzhengli
* @date 2013-11-17
* @zuoyong  模拟凯撒算法
*/ 
/*
 * String实例中,
 * charAt(int index)方法是一个能够用来检索特定索引下的字符的String实例的方法.
 * charAt()方法返回指定索引位置的char值。索引范围为0~length()-1.
 */
/*
 * 测试%和charAt的具体用法
System.out.println(4%3);
String letters = "abcdefghijklmnopqrstuvwxyz";
System.out.println(letters.charAt(1));*/

public class Kaisa {
//用于加密(encrypt)
public static String encrypt(String text,int key){  

StringBuffer sb=new StringBuffer();
String letters = "abcdefghijklmnopqrstuvwxyz";
text = text.toLowerCase(); //不管大小写我都把它转换成小写的。容易模拟本算法

for (int i = 0; i < text.length(); i++) {
//97 的ascii是 'a'
int index=(text.charAt(i)-97+key)%26;//key的值为正,右移
if(index>=0&&index<=25){
sb.append(letters.charAt(index));
}else{
//sb.append(text.charAt(i));
}
}
return sb.toString();
}
 //用于解密
public static String decrypt(String cryptograph,int key){    
StringBuffer plaintext=new StringBuffer();
String letters = "abcdefghijklmnopqrstuvwxyz";
cryptograph=cryptograph.toLowerCase();

for (int i = 0; i < cryptograph.length(); i++) {
int index=(cryptograph.charAt(i)-97-key)%26;//key的值为负
if(index>=0&&index<=25){
plaintext.append(letters.charAt(index));
}else{
plaintext.append(cryptograph.charAt(i));
}
}
return plaintext.toString();
}

public static void main(String[] args){
//String st="hello world!";
/*
 * 定义所需要加密的字符串和移位数
 */
String st="xyz";
int key=1;

System.out.println("原来的字符:"+st);
System.out.println("加密后的字符:"+encrypt(st,key));
System.out.println("解密后的字符:"+decrypt(encrypt(st,key),key));  
}

} des 凯撒
补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,