已有101人关注
java入门经典 第11章习题1,字符简单加密
发表在Java图书答疑 2014-11-24
是否精华
版块置顶:
每个字符x与值y异或可加密,再与y进行异或可解密,但是y的取值好像是有范围的,当我y=10000,可以进行字母的加密及正确解密,但是汉字却不行,当y=20000,,可以进行汉字的加密,却不能进行英文字母的,这个y值的取值范围究竟是怎么样的?
期待您的回复!
分享到:
精彩评论 7
学分: LV1
TA的每日心情
开心
2021-10-26 19:13:33
2014-11-24
沙发
你说的是228页,11.8习题中的选择题吗?
skysea4
学分:0 LV1
TA的每日心情
伤心
2020-03-28 09:12:33
2014-11-25
板凳
不是的,是226页的,上机实践第一题
学分: LV1
TA的每日心情
开心
2021-10-26 19:13:33
2014-11-25
地板
亲,这个程序我刚刚运行过,是可以正常运行的,没有出现您说的y取值的问题呀。
skysea4
学分:0 LV1
TA的每日心情
伤心
2020-03-28 09:12:33
2014-11-26
4L
我是自己写的程序,那您帮我看看这段程序的问题吧。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.Reader;
import java.util.Scanner;


//使用异或

public class Test1 {
public static void main(String[] args){
String saveFile = "Source.txt";
String origin = null;
String encryp = null;
try{
Scanner in = new Scanner(System.in);
String message = in.nextLine();
File sFile = new File(saveFile);
FileWriter ow = new FileWriter(sFile);
char[] cc = message.toCharArray();
encryption(cc);
ow.write(cc);
ow.close();

FileReader fr = new FileReader(sFile);
char[] mesg = new char[message.length()];
int rs = 0;
while((rs = fr.read(mesg)) >0 ){
encryp = new String(mesg);
System.out.println("加密后");
System.out.println(encryp);
 }

PrintWriter fw = new PrintWriter(System.out);
char[] demesg = decryption(encryp.toCharArray());
System.out.println("明文:");
fw.write(demesg);
fw.close();
}catch(Exception e){
e.printStackTrace();
}
}

public static char[] encryption(char[] cc){
for(int i = 0;i< cc.length;i++){
cc[i] = (char) (cc[i]^10000);
}
return cc;
}

public static char[] decryption(char[] cc){
for(int i = 0;i< cc.length;i++){
cc[i] = (char) ((cc[i]^10000));
}
return cc;
}

}
在异或的10000哪里,如果改到20000就没法加密与解密字母了。。。如果大于50000,就没法解密汉字,,但是20000到40000多是可以解密汉字的,这是为什么?
无语_mrkj
学分:3155 LV11
2014-11-27
5L
在进行异或时,取值不要写的太大,您可以用1000以下的数值进行异或,例如,使用100,就可以既对汉字进行加密和解密,又可以对字母进行正确的加密与解密了。
skysea4
学分:0 LV1
TA的每日心情
伤心
2020-03-28 09:12:33
2014-11-28
6L
为什么不能太大?是因为太大的话,异或后的值溢出么?
无语_mrkj
学分:3155 LV11
2014-12-01
7L
可能是。
首页上一页 1 下一页尾页 7 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照