漢字驗證碼演算法

2021-07-10 18:02:35 字數 1933 閱讀 8200

/* 例如「好」字的十六進製制區位碼是ba c3,前兩位是區域,後兩位代表位置,ba處在第26區,「好」處在此

區漢字的第35位也就是c3位置,所以數字**就是2635。這就是gb2312漢字區位原理。根據《漢字區位碼表 》我們可以發現

第15區也就是af區以前都沒有漢字,只有少量符號,漢字都從第16區b0開始,這就是

為什麼gb2312字符集都是從16區開始的。對於生成中文漢字驗證碼來說,因為第15區也就是af區以前都沒有漢字,只有

少量符號,漢字都從第16區b0開始,並且從區位d7開始以後的漢字都是和很難見到的繁雜漢字,所以這些都要排出掉。所以隨

機生成的漢字十六進製制區位碼第1位範圍在b、c、d之間,如果第1位是d的話,第2位

區位碼就不能是7以後的十六進製制數。在來看看區位碼表發現每區的第乙個位置和最後乙個位置都是空的,沒有漢字,因此隨機

生成的區位碼第3位如果是a的話,第4位就不能是0;第3位如果是f的話,第4位就

不能是f。*/

`private string getrandomtext(int seed)

else

random rand1 = new random(shu[1] * unchecked((int)datetime.now.ticks)+seed);

shu[2] = rand1.next(10, 16);

if (shu[2] == 10)

else if (shu[2] == 15)

else

b_zi[0] = convert.tobyte(shu[0].tostring(「x」) + shu[1].tostring(「x」), 16);

b_zi[1] = convert.tobyte(shu[2].tostring(「x」) + shu[3].tostring(「x」), 16);

encoding code = encoding.getencoding(「gb2312」);

return code.getstring(b_zi, 0, 2);

}

private void createimage()

if (text == null || text == string.empty)

bitmap bitmap = new bitmap((int)math.ceiling((text.length * 20.5)), 22);

graphics g = graphics.fromimage(bitmap);

random r = new random();

g.clear(color.white);

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

font font = new font("宋體", 12, fontstyle.bold);

lineargradientbrush brush = new lineargradientbrush(new rectangle(0, 0, bitmap.width, bitmap.height), color.blue, color.darkred, 1.2f, true);

g.drawstring(text, font, brush, 2, 2);

for (int i = 0; i < 100; i++)

g.drawrectangle(new pen(color.silver), 0, 0, bitmap.width - 1, bitmap.height - 1);

picturebox1.image = bitmap;

}private void linklabel1_linkclicked(object sender, linklabellinkclickedeventargs e)

private void button1_click(object sender, eventargs e)

else

}`

PHP算式驗證碼和漢字驗證碼的實現方法

在php 開發中,驗證碼可以有效地保護我們的表單不被惡意提交,但是如果不使用算式驗證碼或者漢字驗證碼,僅僅使用簡單的字母或者數字驗證碼,這樣的驗證碼方案真的安全嗎?大家知道簡單數字或者字母驗證碼很容易被破解,但是算式驗證碼或者中文漢字驗證碼不容易被破解,所以建議大家在使用驗證碼的時候,盡量用算式驗證...

PHP實現簡單漢字驗證碼

現在越來越多的 都開始使用漢字驗證碼了,既增加了我們國人的親切感,同時也增加了機器破解的難度,這裡我就簡單粗暴的說一下。建立背景畫布 image imagecreatetruecolor 200,60 background imagecolorallocate image,255,255,255 i...

驗證碼 簡單驗證碼識別

這裡的驗證碼是內容非常簡單的,結構非常清晰的 這裡的驗證碼是內容非常簡單的,結構非常清晰的 這裡的驗證碼是內容非常簡單的,結構非常清晰的 興之所至之所以說簡單,我覺得是這樣的 抽了五張驗證碼扔進ps,50 透明度,長這樣 只有數字為內容 每張圖的數字都在固定位置 沒有太大的干擾因素 數字字型,形態完...