java实现随机中文验证码

      现在很多应用的验证码采用的中文验证码,一定程度的放大了OCR之类的图像识别破解验证码的难度,原理主要是中文编码的生成格式,规定两个127以后的字节组合在一起形成一个汉字,前面的一个字节(高位)从0xA1到0xF7,后面的一个字节(低位)从0xA1到0xFE。这样就能组成7000多个简体汉字。

    为了去掉生僻字,选取高位176到215,低位161到254,保留下来3600多个常用字.

    代码实现如下:

public class CreateCheckCode {
	
	/**
	 * 生成随机汉字
	 * @return
	 */
	public static char getRandomChar() {
		String str = "";
		int hightPos;
		int lowPos;

		Random random = new Random();

		hightPos = (176 + Math.abs(random.nextInt(39)));
		lowPos = (161 + Math.abs(random.nextInt(93)));

		byte[] b = new byte[2];
		b[0] = (Integer.valueOf(hightPos)).byteValue();
		b[1] = (Integer.valueOf(lowPos)).byteValue();

		try {
			str = new String(b, "GB2312");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}

		return str.charAt(0);
	}
	
	public static void main(String[] args) {
		
		char[] words = new char[4];
	
		for (int i = 0; i<words.length; i++) {
			words[i] = getRandomChar();
		}
		
		System.out.println(words);
	}

}
测试结果如下,运行代码得到一个4个字的随机汉字



    

发布了46 篇原创文章 · 获赞 2 · 访问量 10万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章