不知道你的程序是网络程序,还是单机程序。如果是本地程序的话,要验证码做什么?多此一举。如果是网络程序的话,请看下面:
以上的几个回答,从表面看是实现了验证码,但问题是都是本地生成,本地校验,与服务器无关,那也失败了验证码的实际功能,本地显示等问题是很容易做的。
验证码的功能是不仅仅要验证你的帐号和密码,还要验证服务器返回的一个随机数,注意:这个随机数是要服务器生成的,才能保证有效,为的就是验证别人无法用暴力破解你的网络帐号和密码。所以现在的问题就成了在程序中如果取得服务器返回的验证信息,在WEB中是图片,然而不管是在WEB中应用,还是在程序中应用,都不应该采用字符及明文传输验证信息。否则的话,客户端就可以自行处理了(WEB上传回来的就没有数字或字符验证信息,全是图片)。如果是图片的话,问题又转换成了,客户端程序如何取得服务器端的图片并显示(不通过WEB协议)。
实现起来确实有难度啊。就我个人的观点来说,可以按下面的思路解决:
客户端起动后先连接服务器端,客户端连接服务器时,生成一个随机数,保存在CSocket信息当中(服务器总是要继承CSocket或自定义一个socket类吧),然后向客户端发回和随机数相关的图片文件(注意是图片文件,而不是验证字符),客户端负责解析并显示该图片,客户端再向用户寻问帐号、密码和验证码,然后登录。
上面的流程才使验证码起到实际的做用。
以上的几个回答,从表面看是实现了验证码,但问题是都是本地生成,本地校验,与服务器无关,那也失败了验证码的实际功能,本地显示等问题是很容易做的。
验证码的功能是不仅仅要验证你的帐号和密码,还要验证服务器返回的一个随机数,注意:这个随机数是要服务器生成的,才能保证有效,为的就是验证别人无法用暴力破解你的网络帐号和密码。所以现在的问题就成了在程序中如果取得服务器返回的验证信息,在WEB中是图片,然而不管是在WEB中应用,还是在程序中应用,都不应该采用字符及明文传输验证信息。否则的话,客户端就可以自行处理了(WEB上传回来的就没有数字或字符验证信息,全是图片)。如果是图片的话,问题又转换成了,客户端程序如何取得服务器端的图片并显示(不通过WEB协议)。
实现起来确实有难度啊。就我个人的观点来说,可以按下面的思路解决:
客户端起动后先连接服务器端,客户端连接服务器时,生成一个随机数,保存在CSocket信息当中(服务器总是要继承CSocket或自定义一个socket类吧),然后向客户端发回和随机数相关的图片文件(注意是图片文件,而不是验证字符),客户端负责解析并显示该图片,客户端再向用户寻问帐号、密码和验证码,然后登录。
上面的流程才使验证码起到实际的做用。