密码验证时的随即图片生成是怎么实现的?

king1012 2003-08-05 06:54:21
我们在chinaren、msn等网站经常看到这种应用,防止恶意提交。
请教大侠程序该如何设计?
谢谢!
...全文
34 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
aku0708 2003-10-08
  • 打赏
  • 举报
回复
我有个例子,粘给你看看,别人给我的
SERVLET
++++++++++++
package com.aku.image;

import java.io.*;
import java.util.*;
import com.sun.image.codec.jpeg.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.awt.*;
import java.awt.image.*;
public class getImg
extends HttpServlet {

private Font mFont = new Font("宋体", Font.PLAIN, 12); //设置字体
//处理post
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {

doGet(request, response);
}

public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
//取得一个1000-9999的随机数
String s = "";

int intCount = 0;

intCount = (new Random()).nextInt(9999); //

if (intCount < 1000) {
intCount += 1000;

}
s = intCount + "";

//对session付值。

HttpSession session = request.getSession(true);

session.setAttribute("getImg", s);

response.setContentType("image/gif");

ServletOutputStream out = response.getOutputStream();

BufferedImage image = new BufferedImage(35, 14, BufferedImage.TYPE_INT_RGB);

Graphics gra = image.getGraphics();
//设置背景色
gra.setColor(Color.yellow);

gra.fillRect(1, 1, 33, 12);
//设置字体色
gra.setColor(Color.black);

gra.setFont(mFont);
//输出数字
char c;

for (int i = 0; i < 4; i++) {

c = s.charAt(i);

gra.drawString(c + "", i * 7 + 4, 11); //7为宽度,11为上下高度位置

}

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

encoder.encode(image);

out.close();
}

}
+++++
IMAGE。JSP
+++++
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.lang.*,com.aku.image.getImg"%>
<html>
<head>
<title>
image
</title>
</head>
<body bgcolor="#ffffff">
//主动去调用SERVLET生成
<img src="getimg" width="35" height="14">
</body>
</html>
chenggn 2003-10-08
  • 打赏
  • 举报
回复


如果用 0.jgp

也会被 恶意注册的

即使生成图片 也会被 orc 识别 而后注册

现在大部分是 生成图片 然后 扭曲
stonewang 2003-08-06
  • 打赏
  • 举报
回复
写错了"应该不能"应是-->“应该不难”
Tomcat4 2003-08-06
  • 打赏
  • 举报
回复
应该不是这么干的!
看一下这个!
http://www.javazoom.net/jzservlets/typo10/typo.html
redstarstar 2003-08-06
  • 打赏
  • 举报
回复
应该是在服务器端,随机产生一个字符串(包括字母,数字),一方面根据这个字符串生成一张图片返回给客户端,一方面将这个字符串放入session中,为了用户提交请求时验证使用。
stonewang 2003-08-06
  • 打赏
  • 举报
回复
应该不能,方法是,在服务端,根据字母相应生成的图片
Silenter 2003-08-06
  • 打赏
  • 举报
回复
把数字1,2,。。。0,字母a,b,。。。z
分成每个数字或者字母唯一个小图片,随即选出4个图面排在一起,是不是就可以了?


我是这么想的,打算这么做做看
斯赛 2003-08-05
  • 打赏
  • 举报
回复
asp的我有
要就发e-mail给我
我发给你
pop_color@163.com
king1012 2003-08-05
  • 打赏
  • 举报
回复
楼上的兄弟能否不吝赐教,讲详细点?谢谢!
zez 2003-08-05
  • 打赏
  • 举报
回复
还有的是几个数字是以一幅图片的格式显示的,还有的是字符串..我都见过的..
这样的情况顶多实时生成图片也就ok啦...
呵呵,没什么技术难度

------------------------------------------------------
我们还年轻牛奶会有的奶牛也会有的
可天天在 csdn 混这些会有吗 ??
Schlemiel 2003-08-05
  • 打赏
  • 举报
回复
太easy了,放上0.jpg、1.jpg、2.jpg……之类的图片,需要的时候把几个图片拼接起来显示就行了
gaoxin900 2003-08-05
  • 打赏
  • 举报
回复
谁能解释一下其原理?谢谢
ada100 2003-08-05
  • 打赏
  • 举报
回复
使用vml画出来的
dinosaur_cl 2003-08-05
  • 打赏
  • 举报
回复
其实只是实时生成一个图片文件,再返回给用户看吧了。
xqi8 2003-08-05
  • 打赏
  • 举报
回复
up
king1012 2003-08-05
  • 打赏
  • 举报
回复
分不够再给!!呵呵

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧