黑马程序员技术交流社区
标题:
字符串加密
[打印本页]
作者:
xinchenglong
时间:
2013-8-26 14:46
标题:
字符串加密
入学测试题:求高手指导……
编写一个应用程序用来输入的字符串进行加密,对于字母字符串加密规则如下:
‘a’→’d’ ‘b’→’e’ ‘w’→’z’ …… ‘x’→’a’ ‘y’→’b’ ‘z’→’c’
‘A’→’D’ ‘B’→’E’ ‘W’→’Z’ …… ‘X’→’A’ ‘Y’→’B’ ‘Z’→’C’
对于其他字符,不进行加密。 十分感谢!!!!
作者:
chung
时间:
2013-8-26 17:26
本帖最后由 chung 于 2013-8-26 17:38 编辑
package test;
import java.util.Scanner;
public class CaeserTest {
public static char ascii2Char(int ASCII) {
return (char) ASCII;
}
public static String ascii2String(int[] ASCIIs) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < ASCIIs.length; i++) {
sb.append((char) ascii2Char(ASCIIs[i]));
}
return sb.toString();
}
public String encrypt(String str, int key){
char[] chars = str.toCharArray();
int[] asciiArray = new int[chars.length];
key = key%127;
for(int i = 0; i < chars.length; i++){
//System.out.println((int)chars[i]);
asciiArray[i] = (int) (chars[i]) + key;
//System.out.println(asciiArray[i]);
}
return ascii2String(asciiArray);
}
public String decrypt(String str, int key){
char[] chars = str.toCharArray();
int[] asciiArray = new int[chars.length];
key = key%127;
for(int i = 0; i < chars.length; i++){
//System.out.println((int)chars[i]);
asciiArray[i] = (int) (chars[i]) - key;
//System.out.println(asciiArray[i]);
}
return ascii2String(asciiArray);
}
public static void main(String[] args) {
CaeserTest ct = new CaeserTest();
System.out.println("输入明文字符串:");
Scanner input = new Scanner(System.in);
String str = input.nextLine();
System.out.print("输入密钥:");
int key = input.nextInt();
System.out.println("输出密文字符串:" + new String(ct.encrypt(str, key)));
System.out.println("输出明文字符串:" + new String(ct.decrypt(ct.encrypt(str, key), key)));
}
}
复制代码
凯撒密码简单的加解密实现
作者:
xinchenglong
时间:
2013-8-26 20:44
还是不太懂,但是还是要谢谢你!
作者:
brucel50
时间:
2013-8-26 21:32
太雷人了。。。
提问的人和回答的人都没看是哪个交流区的···
作者:
心动行动
时间:
2013-8-27 21:24
Dictionary<char, char> dic = new Dictionary<char, char>(); //声明一个键值对集合
string str1 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; //准备添加到键值对集合的键
string str2 = "defghijklmnopqrstuvwxyzabcDEFGHIJKLMNOPQRSTUVWXYZABC"; //准备添加的值
for (int i = 0; i < str1.Length; i++) //遍历键所在的字符串
{
dic.Add(str1[i], str2[i]); //添加键和值
}
Console.WriteLine("请输入字符串");
string str3 = Console.ReadLine(); //输入的字符串
Console.WriteLine("原来是" + str3); //源字符串
StringBuilder sb = new StringBuilder(); //创建一个StringBuilder的对象
for (int i = 0; i < str3.Length; i++) //遍历输入的字符串
{
if (dic.ContainsKey(str3[i])) //如果集合中包含这个字符的键
{
sb.Append(dic[str3[i]]); //sb添加对应的值
}
else // 如果不包含
{
sb.Append(str3[i]); // 添加原来的值
}
}
Console.WriteLine("转换后"+sb); //输出转换后的字符串
Console.ReadKey();
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2