求一个可逆的加密算法 1 要求用java和javasrcipt两种语言同时实现(既两种语言版本的加密解密效果一致)2 不要求特别复杂,也不要特别简单得到答案即给分,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <%@ pagecontentType="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" %><%!Color getRandColor(int fc,int bc){//给定范围获得随机颜色 Random random = new Random(); if(fc>255) fc=255; if(bc>255) bc=255; int r=fc+random.nextInt(bc-fc); int g=fc+random.nextInt(bc-fc); int b=fc+random.nextInt(bc-fc); return new Color(r,g,b); }%><%//设置页面不缓存response.setHeader("Pragma","No-cache");response.setHeader("Cache-Control","no-cache");response.setDateHeader("Expires", 0);// 在内存中创建图象int width=60, height=20;BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);// 获取图形上下文Graphics g = image.getGraphics();//生成随机类Random random = new Random();// 设定背景色g.setColor(getRandColor(200,250));g.fillRect(0, 0, width, height);//设定字体g.setFont(new Font("Comic Sans MS",Font.PLAIN,20));//画边框//g.setColor(new Color());//g.drawRect(0,0,width-1,height-1);// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到g.setColor(getRandColor(160,200));for (int i=0;i<155;i++){ int x = random.nextInt(width); int y = random.nextInt(height); int xl = random.nextInt(12); int yl = random.nextInt(12); g.drawLine(x,y,x+xl,y+yl);}// 取随机产生的认证码(4位数字)String sRand="";for (int i=0;i<4;i++){ String rand=String.valueOf(random.nextInt(10)); sRand+=rand; // 将认证码显示到图象中 g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成 g.drawString(rand,13*i+6,16);}// 将认证码存入SESSIONsession.setAttribute("rand",sRand);// 图象生效g.dispose();// 输出图象到页面ImageIO.write(image, "JPEG", response.getOutputStream());%> //加密 String s = new String("abcd中"); char[] a = s.toCharArray(); for (int i = 0; i < a.length; i++) { a[i] = (char) (a[i] ^ 't'); } String secret = new String(a); System.out.println("密文:" + secret);//=======================================//解密 for (int i = 0; i < a.length; i++) { a[i] = (char) (a[i] ^ 't'); } String secret1 = new String(a); System.out.println("密文:" + secret1); 楼上的楼上 好文啊 让我又学到了一个东西 厉害 敬仰lip009(深蓝忧郁) 好样! 恩那个随机产生认证码的代码不错copying....... 呵呵,如果搞成JAVASCRIPT,这样的加密就形同虚设了 呵呵,如果搞成JAVASCRIPT,这样的加密就形同虚设了---------------------------------------------你把把javascript写呵呵,如果搞成JAVASCRIPT,这样的加密就形同虚设了---------------------------------------------你把把javascript写在一个*.js的文件中把。然后<script src="*.js"></script>就行了把在一个*.js的文件中把。然后<script src="*.js"></script>就行了把 var s="abcd中";//加密var result="";for(var i=0;i<s.length;i++){ result=result+String.fromCharCode(s.charCodeAt(i)^"t".charCodeAt(0));}//解密var result1="";for(var j=0;j<result.length;j++){ result1=result1+(String.fromCharCode(result.charCodeAt(j)^"t".charCodeAt(0)));}alert(result);alert(result1); 一个非常离奇古怪的问题 打印一个一维数组 代码如下 为何得不出想要的结果呢?求助大侠 关于Java多线程技术中所有方法的详细解析 如何调用启动的线程? 我做了个局域网广播的小程序,就是有问题找不到: 有关URL的hashCode的问题,多谢多谢 什么是浅克隆和深克隆? 问个比较弱的问题,BufferedReader的好处究竟是什么? 急 java.rmi.registry.LocateRegistry;怎么了? 关于wait()的一个问题,急急急 socket编程时,java中是否有类似c++中的htonl方法? 怎么往db2中插入lob 对像
<%!
Color getRandColor(int fc,int bc){//给定范围获得随机颜色
Random random = new Random();
if(fc>255) fc=255;
if(bc>255) bc=255;
int r=fc+random.nextInt(bc-fc);
int g=fc+random.nextInt(bc-fc);
int b=fc+random.nextInt(bc-fc);
return new Color(r,g,b);
}
%>
<%
//设置页面不缓存
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);// 在内存中创建图象
int width=60, height=20;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);// 获取图形上下文
Graphics g = image.getGraphics();//生成随机类
Random random = new Random();// 设定背景色
g.setColor(getRandColor(200,250));
g.fillRect(0, 0, width, height);//设定字体
g.setFont(new Font("Comic Sans MS",Font.PLAIN,20));//画边框
//g.setColor(new Color());
//g.drawRect(0,0,width-1,height-1);
// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
g.setColor(getRandColor(160,200));
for (int i=0;i<155;i++)
{
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(12);
int yl = random.nextInt(12);
g.drawLine(x,y,x+xl,y+yl);
}// 取随机产生的认证码(4位数字)
String sRand="";
for (int i=0;i<4;i++){
String rand=String.valueOf(random.nextInt(10));
sRand+=rand;
// 将认证码显示到图象中
g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
g.drawString(rand,13*i+6,16);
}// 将认证码存入SESSION
session.setAttribute("rand",sRand);// 图象生效
g.dispose();// 输出图象到页面
ImageIO.write(image, "JPEG", response.getOutputStream());
%>
String s = new String("abcd中");
char[] a = s.toCharArray();
for (int i = 0; i < a.length; i++) {
a[i] = (char) (a[i] ^ 't');
}
String secret = new String(a);
System.out.println("密文:" + secret);
//=======================================
//解密
for (int i = 0; i < a.length; i++) {
a[i] = (char) (a[i] ^ 't');
}
String secret1 = new String(a);
System.out.println("密文:" + secret1);
让我又学到了一个东西 厉害 敬仰lip009(深蓝忧郁) 好样!
copying.......
---------------------------------------------你把把javascript写呵呵,如果搞成JAVASCRIPT,这样的加密就形同虚设了
---------------------------------------------你把把javascript写在一个*.js的文件中把。然后<script src="*.js"></script>就行了把在一个*.js的文件中把。然后<script src="*.js"></script>就行了把
//加密
var result="";
for(var i=0;i<s.length;i++){
result=result+String.fromCharCode(s.charCodeAt(i)^"t".charCodeAt(0));
}
//解密
var result1="";
for(var j=0;j<result.length;j++){
result1=result1+(String.fromCharCode(result.charCodeAt(j)^"t".charCodeAt(0)));
}
alert(result);
alert(result1);