java 字母移位加密

来源:百度知道 编辑:UC知道 时间:2024/07/02 00:17:57
比如我输入一行字幕,i am student 再输入一个KEY 比如2 然后加密后的字母是j bn tuvefou就是所有字母往后移一位,如果我输入字母Z KEY是1的话,就变成A了,就是回到头来了。。求算法。。。
打错了不好意思,KEY是1就移一位

【可加密,也可解密(-key)】

public class Wangyf {

public static void main(String[] args) {
String str = "i am student zzzZZZ";

//加密
String str2 = getString( str, 1 );
System.out.println(str2);

//解密 用 -KEY
System.out.println(getString( str2, -1));
}

private static final char C1 = 'a';
private static final char C2 = 'z';
private static final char C3 = 'A';
private static final char C4 = 'Z';

public static String getString(String str, int key) {
key %= 26;
if(key == 0 ){
return str;
}
char[] chars = str.toCharArray();
for(int i = chars.length - 1 ; i >= 0 ; i --){
if(chars[i] >= C3 && chars[i] <= C4){
chars[i] += key;
if(chars[i] > C4){
chars[i] = (char) ( chars[i] -C4 + C3 - 1);
}else if(chars[i] < C3){
chars[i]