900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 第四十九篇: JAVA加密解密之凯撒加密(Caesar cipher)算法

第四十九篇: JAVA加密解密之凯撒加密(Caesar cipher)算法

时间:2024-04-20 23:57:14

相关推荐

第四十九篇: JAVA加密解密之凯撒加密(Caesar cipher)算法

凯撒加密算法简介

凯撒加密(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; // 移动key%26位if (c < 'a')c += 26; // 向左超界if (c > 'z')c -= 26; // 向右超界}// 如果字符串中的某个字符是大写字母else if (c >= 'A' && c <= 'Z'){c += k % 26; // 移动key%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);}}123456789101112131415161718192223242526272829303132333435363738394041424344454647484950515253545556123456789101112131415161718192223242526272829303132333435363738394041424344454647484950515253545556

测试代码:

import org.junit.Test;import com.jianggujin.codec.HQCaesar;public class CaesarTest{HQCaesar caesar = HQCaesar.getInstance();@Testpublic 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));}}123456789101112131415161718123456789101112131415161718

测试结果:

加密后:nmerkkynmr

解密后:jianggujin

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。