凯撒加密算法简介
凯撒加密(Caesar cipher)是一种简单的消息编码方式:它根据字母表将消息中的每个字母移动常量位k。举个例子如果k等于3,则在编码后的消息中,每个字母都会向前移动3位:a会被替换为d;b会被替换成e;依此类推。字母表末尾将回卷到字母表开头。于是,w会被替换为z,x会被替换为a。
凯撒加密算法实现
package com.jianggujin.codec;
/**
* 凯撒加密
*
* @author jianggujin
*
*/
public class HQCaesar
{
private static HQCaesar caesar =
new HQCaesar();
public static HQCaesar
getInstance()
{
return caesar;
}
private HQCaesar()
{
}
public String
encrypt(String str,
int k)
{
StringBuilder result =
new StringBuilder();
for (
char c : str.toCharArray())
{
if (c >=
'a' && c <=
'z')
{
c += k %
26;
if (c <
'a')
c +=
26;
if (c >
'z')
c -=
26;
}
else if (c >=
'A' && c <=
'Z')
{
c += k %
26;
if (c <
'A')
c +=
26;
if (c >
'Z')
c -=
26;
}
result.append(c);
}
return result.toString();
}
public String
decrypt(String str,
int k)
{
k =
0 - k;
return encrypt(str, k);
}
}
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
测试代码:
import org.junit.Test;
import com.jianggujin.codec.HQCaesar;
public class CaesarTest
{
HQCaesar caesar = HQCaesar.getInstance();
@Test
public void encode()
{
String data =
"jianggujin";
int k =
4;
String result = caesar.encrypt(data, k);
System.err.println(
"加密后:" + result);
System.err.println(
"解密后:" + caesar.decrypt(result, k));
}
}
123456789101112131415161718
123456789101112131415161718
测试结果: 加密后:nmerkkynmr 解密后:jianggujin