移位加密解密算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
移位加密解密算法
移位加密算法,是需要有对应的参照(下例中参照为STR_AZ常量),
//可以直接看代码,下⾯解释繁琐哈哈....
如果待加密元素值在参照⾥找到相同的元素值,则取参照⾥移位后的值作为加密后的值。
以此来实现移位; 1public class Move {
2//加密移位参照
3static final String STR_AZ = "ABCDEFGHIGKLMNOPQRSTUVWXYZ";
4static char[] ssTemp;
5
6//加密
7public String encrypt(String s) {
8 StringBuffer ss = new StringBuffer();
9for (int i = 0; i < s.length(); i++) {
10char tempi = s.charAt(i);
11for (int j = 0; j < STR_AZ.length(); j++) {
12//⼤于最⼤位后,从初的A取。
形成循环
13if (tempi == STR_AZ.charAt(j)) {
14if ((j+3) >= STR_AZ.length()){
15int z = j+3-STR_AZ.length();
16 ss.append(STR_AZ.charAt(z));
17 }else{
18 ss.append(STR_AZ.charAt(j+3));
19 }
20 }
21 }
22 }
23return ss.toString();
24 }
25//解密
26public String decrypt(String s){
27 StringBuffer ssde = new StringBuffer();
28for (int i = 0; i < s.length(); i++) {
29char tempi = s.charAt(i);
30for (int j = 0; j < STR_AZ.length(); j++) {
31if (tempi == STR_AZ.charAt(j)) {
32//⼩于最⼩位后,从最⼤的Z取,形成循环
33if ((j-3) < 0 ){
34int z = STR_AZ.length()+(j-3);
35 ssde.append(STR_AZ.charAt(z));
36 }else{
37 ssde.append(STR_AZ.charAt(j-3));
38 }
39 }
40 }
41 }
42return ssde.toString();
43 }
44
45public static void main(String[] args){
46 Move move3 = new Move();
47 String s1 = "AYZ";
48 String s2 = "DBC";
49 System.out.println("密码:");
50 System.out.println(move3.encrypt(s1));
51 System.out.println("解密:");
52 System.out.println(move3.decrypt(s2));
53 }
54
55 }
PSa,例⼦是往后移动3位来加密,遇到参照峰值则移动到头(实现⾸尾相接循环加/解密);
PSb,解密就是PSa的逆...;
PSc,修改第11⾏代码如上,省去PSa,和PSb的逻辑,但是当你加密XYZ的时候就会⽆法获取;
for (int j = 0; j < STR_AZ.length()-3; j++)。