亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? code.asp

?? 一套企業(yè)全站
?? ASP
字號:
<%
'------------------
'圖片驗證碼
'netdust
'http://www.oyj.cn
'05-8-29
'以前的圖片驗證碼很容易被破解,所以在其基礎(chǔ)上進行改進,即使知道源代碼
'也很難破解。
'干擾次數(shù)每加一  ->  窮舉法的代價提高約100*100倍
'適當(dāng)設(shè)定雜點幾率可以有效降低軟件識別正確率
'------------------

Option Explicit

Call Com_CreatValidCode("SessionName")


Rem 生成驗證碼圖片
Sub Com_CreatValidCode(pSN)
	Const codeLen = 4						'驗證碼位數(shù)
	Const cOdds = 2 						'雜點出現(xiàn)的機率
	Const dbtTimes = 3					'干擾次數(shù)(安全考慮,最好不要小于2)

	Const cAmount = 10 					'字庫數(shù)量
	Const cCode = "0123456789"	'字庫對應(yīng)的字符
	Const UnitWidth = 16				'字寬(要為4的倍數(shù))
	Const UnitHeight = 13				'字高
	Const DotsLimit = 10				'每次刪除有效點的上限(避免無法人為識別)
	Const tryCount = 5					'避免刪除有效點超過上限的嘗試次數(shù)限制

	'-----------

	Randomize
	Dim i, ii, iii

	' 禁止緩存
	Response.expires=-1 
	Response.AddHeader"pragma","no-cache" 
	Response.AddHeader"cache-control","no-store" 

	Response.ContentType = "Image/BMP"

	' 顏色的數(shù)據(jù)(字符,背景)
	Dim vColorData(1)
	vColorData(0) = ChrB(0) & ChrB(0) & ChrB(0)  ' 藍0,綠0,紅0(黑色)
	vColorData(1) = ChrB(255) & ChrB(255) & ChrB(255) ' 藍250,綠236,紅211(淺藍色)

	' 字符的數(shù)據(jù)(可以自己修改,如果修改了尺寸,記得把前面的設(shè)定也改了)
	Dim vNumberData(9)
	vNumberData(0) = "1111000000001111111000000000011111100111111001111110011111100111111001111110011111100111111001111110011111100111111001111110011111100111111001111110011111100111111001111110011111100000000001111111000000001111"
	vNumberData(1) = "1111110001111111111100000111111111100000011111111100110001111111111111000111111111111100011111111111110001111111111111000111111111111100011111111111110001111111111111000111111111100000000011111110000000001111"
	vNumberData(2) = "1111110000011111111110000000111111110001110011111110001111001111111111111001111111111111001111111111111001111111111111001111111111111001111111111111001111001111111001111100111111100000000011111110000000001111"
	vNumberData(3) = "1111100000011111111100000000111111100111111001111110011111001111111111111001111111111110001111111111111000111111111111111001111111111111110011111110011111100111111001111110011111110000000011111111100000011111"
	vNumberData(4) = "1111111100111111111110110011111111110011001111111111001100111111111001110011111111001111001111111000000000000011100000000000001111111111001111111111111100111111111111110011111111111111001111111111111100111111"
	vNumberData(5) = "1110000000000111110011111111111111001111111111111100111111111111110011111111111111001100000011111100000111100111111111111110011111111111111001111111111111100111110011111110011111001111111001111110000000001111"
	vNumberData(6) = "1111110000011111111110000000111111110011111001111110011111111111111001111111111111100100000111111110000000001111111000111110011111100111111001111110011111100111111001111110011111110000000011111111100000011111"
	vNumberData(7) = "1110000000000111111000000000011111100111111001111110011111100111111111111100111111111111110011111111111110011111111111110011111111111111001111111111111100111111111111110011111111111111001111111111111100111111"
	vNumberData(8) = "1111100000011111111100000000111111100111111001111110011111100111111001111110011111110000000011111111000000001111111100111100111111100111111001111110011111100111111001111110011111110000000011111111100000011111"
	vNumberData(9) = "1111100000011111111100000000111111100111111001111110011111100111111001111110011111110000000001111111000000100111111111111110011111111111111001111111111111100111111001111100111111110000000011111111100000011111"

	' 隨機產(chǎn)生字符
	Dim vCodes
	ReDim vCode(codeLen-1)
	For i = 0 To codeLen-1
	  vCode(i) = Int(Rnd * cAmount)
	  vCodes = vCodes & Mid(cCode, vCode(i) + 1, 1)
	  vCode(i) = pcd_doubter(vNumberData(vCode(i)),UnitWidth,UnitHeight,DotsLimit,tryCount,dbtTimes)
	Next

	Session(pSN) = vCodes  '記錄入Session
	Session("VerifyCode") = vCodes	

	' 輸出圖像文件頭
	Response.BinaryWrite ChrB(66) & ChrB(77) & Num2ChrB(54+UnitWidth*UnitHeight*CodeLen*3,4) & ChrB(0) & ChrB(0) &_
	  ChrB(0) & ChrB(0) & ChrB(54) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(40) & ChrB(0) &_
	  ChrB(0) & ChrB(0) & Num2ChrB(UnitWidth*CodeLen,4) & Num2ChrB(UnitHeight,4) &_
	  ChrB(1) & ChrB(0)

	' 輸出圖像信息頭
	Response.BinaryWrite ChrB(24) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & Num2ChrB(UnitWidth*UnitHeight*CodeLen*3,4) &_
	  ChrB(18) & ChrB(11) & ChrB(0) & ChrB(0) & ChrB(18) & ChrB(11) &_
	  ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) &_
	  ChrB(0) & ChrB(0)

	For i = UnitHeight-1 To 0 Step -1  ' 歷經(jīng)所有行
	  For ii = 0 To codeLen-1  ' 歷經(jīng)所有字
	   For iii = 1 To UnitWidth ' 歷經(jīng)所有像素
	    If Rnd * 99 + 1 >= cOdds Then	' 逐行、逐字、逐像素地輸出圖像數(shù)據(jù)
	     Response.BinaryWrite vColorData(Mid(vCode(ii), i * UnitWidth + iii, 1))
	    Else ' 隨機生成雜點
	     Response.BinaryWrite vColorData(1-CInt(Mid(vCode(ii), i * UnitWidth + iii, 1)))
	    End If
	   Next
	  Next
	Next
End Sub

Rem 對單個字的點陣進行干擾
Rem 干擾思想:在點陣范圍內(nèi)隨機產(chǎn)生2個端點,進行連線,以位移較大的一方做橫軸,先將連線上的點刪除,再將被刪除點的縱軸方向上方或下方的點(隨機確定)移向被刪除點,移動后的空白用背景色補充
Function pcd_doubter(str,UnitWidth,UnitHeight,DotsLimit,tryCount,dbtTimes)
	Randomize
	Dim x1,x2,y1,y2,xOffSet,yOffSet,direction,flag,rows,step,yu,yuStr,i,ii,iii,f1,f2
	For f1=1 To dbtTimes	'干擾次數(shù)
		For f2=1 To tryCount	'避免刪除有效點超過上限的嘗試次數(shù)限制
			'隨機確定2個端點
			x1 = int(Rnd*UnitWidth)
			x2 = int(Rnd*UnitWidth)
			y1 = int(Rnd*UnitHeight)
			y2 = int(Rnd*UnitHeight)
			'x,y位移量
			xOffSet = Abs(x2-x1)
			yOffSet = Abs(y2-y1)
			If xOffSet >= yOffSet Then	'以位移量較大方做橫軸
				direction = "x"
				ReDim ary(xOffSet)	'用來記錄連線各點y值
				'x2,y2存儲x值較大的點
				If x2 < x1 Then
					i = x1
					x1 = x2
					x2 = i
					i = y1
					y1 = y2
					y2 = i
				End If
				'判斷從x1->x2在縱軸方向上是增是減
				If y2 >= y1 Then
					flag = 1
				Else
					flag = -1
				End If
				'下面計算連線上點的分布(先是平均分配各行的點,然后隨機分配剩余的點到各行)
				rows = yOffSet + 1	'所占行數(shù)
				step = (xOffSet+1) \ rows	'各行平均分配的點
				yu = (xOffSet+1) Mod rows	'剩余的點數(shù)
				ReDim ary2(rows-1)	'用來記錄剩余點的隨機分配
				While yu > 0
					i = int(Rnd*rows)
					ary2(i) = ary2(i)&"."		'被分配到的行則加一個字符"."
					yu = yu - 1
				WEnd
				iii = 0
				'將連線的點信息記錄到數(shù)組
				For i=0 To rows-1
					For ii=1 To step+Len(ary2(i))
						ary(iii) = y1 + i*flag
						iii = iii + 1
					Next
				Next
				ii = 0
				'統(tǒng)計連線上有效點的數(shù)量
				For i=0 To xOffSet
					If pcd_getDot(x1+i,ary(i),str,UnitWidth) = "0" Then ii = ii + 1
				Next
			Else
				'這里是以y為橫軸,原理與x時相同
				direction = "y"
				ReDim ary(yOffSet)
				If y2 < y1 Then
					i = x1
					x1 = x2
					x2 = i
					i = y1
					y1 = y2
					y2 = i
				End If
				If x2 >= x1 Then
					flag = 1
				Else
					flag = -1
				End If
				rows = xOffSet + 1
				step = (yOffSet+1) \ rows
				yu = (yOffSet+1) Mod rows
				ReDim ary2(rows-1)
				While yu > 0
					i = int(Rnd*10)
					If i < rows Then
						ary2(i) = ary2(i)&"."
						yu = yu - 1
					End If
				WEnd
				iii = 0
				For i=0 To rows-1
					For ii=1 To step+Len(ary2(i))
						ary(iii) = x1 + i*flag
						iii = iii + 1
					Next
				Next
				ii = 0
				For i=0 To yOffSet
					If pcd_getDot(ary(i),y1+i,str,UnitWidth) = "0" Then ii = ii + 1
				Next
			End If
			'如未超過有效點上限則跳出循環(huán),執(zhí)行干擾
			If ii <= DotsLimit Then Exit For
		Next

		If direction = "x" Then
			'隨機確定在縱軸方向上或下進行移動
			If int(Rnd*10) > 4 Then
				'變量連線上的點
				For i=0 To xOffSet
					'遍歷移動
					For ii=ary(i) To 1 Step -1
						Call pcd_setDot(x1+i,ii,str,pcd_getDot(x1+i,ii-1,str,UnitWidth),UnitWidth)
					Next
					'添補空白
					Call pcd_setDot(x1+i,0,str,"1",UnitWidth)
				Next
			Else
				For i=0 To xOffSet
					For ii=ary(i) To UnitHeight-2
						Call pcd_setDot(x1+i,ii,str,pcd_getDot(x1+i,ii+1,str,UnitWidth),UnitWidth)
					Next
					Call pcd_setDot(x1+i,UnitHeight-1,str,"1",UnitWidth)
				Next
			End If
		Else
			If int(Rnd*10) > 4 Then
				For i=0 To yOffSet
					For ii=ary(i) To 1 Step -1
						Call pcd_setDot(ii,y1+i,str,pcd_getDot(ii-1,y1+i,str,UnitWidth),UnitWidth)
					Next
					Call pcd_setDot(0,y1+i,str,"1",UnitWidth)
				Next
			Else
				For i=0 To yOffSet
					For ii=ary(i) To UnitWidth-2
						Call pcd_setDot(ii,y1+i,str,pcd_getDot(ii+1,y1+i,str,UnitWidth),UnitWidth)
					Next
					Call pcd_setDot(UnitWidth-1,y1+i,str,"1",UnitWidth)
				Next
			End If
		End If
	Next
	pcd_doubter = str
End Function

Rem 得到某點的字符
Function pcd_getDot(x,y,str,UnitWidth)
	pcd_getDot = Mid(str,x+1+y*UnitWidth,1)
End Function

Rem 設(shè)置某點的字符
Sub pcd_setDot(x,y,ByRef str,newDot,UnitWidth)
	str = Left(str,x+y*UnitWidth) & newDot & Right(str,Len(str)-x-y*UnitWidth-1)
End Sub

Rem 將數(shù)字轉(zhuǎn)為bmp需要的格式 lens是目標(biāo)字節(jié)長度
Function Num2ChrB(num,lens)
	Dim ret,i
	ret = ""
	While (num>0)
		ret = ret & ChrB(num mod 256)
		num = num \ 256
	WEnd
	For i=Lenb(ret) To lens-1
		ret = ret & chrB(0)
	Next
	Num2ChrB = ret
End Function
%>

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区成人在线视频 | 欧美高清视频不卡网| 国产成人午夜精品影院观看视频| 亚洲第一激情av| 日韩黄色免费电影| 日韩综合小视频| 日韩av中文字幕一区二区| 日韩精品成人一区二区三区| 日本sm残虐另类| 国内精品伊人久久久久影院对白| 国内外精品视频| 日本欧美一区二区三区乱码| 久久综合色8888| 久久久久久99久久久精品网站| 欧美大片国产精品| 最新高清无码专区| 天天射综合影视| 免费欧美在线视频| 成人午夜激情片| 欧美浪妇xxxx高跟鞋交| xfplay精品久久| 亚洲人精品午夜| 狠狠色2019综合网| 久久99精品国产.久久久久久| 国产99久久久国产精品潘金| 欧美日韩色一区| 国产欧美一区二区在线观看| 性久久久久久久久久久久| 国产+成+人+亚洲欧洲自线| 日本久久一区二区| 国产精品无码永久免费888| 麻豆91在线观看| 欧美三级在线播放| 久久精品一区八戒影视| 亚洲国产精品一区二区尤物区| 国产99精品国产| 精品少妇一区二区三区在线视频| 亚洲一区二区美女| 一本久道久久综合中文字幕 | 欧美成人一区二区三区片免费| 亚洲综合999| 欧美精品xxxxbbbb| 国产一区二区在线看| 成人av小说网| 国产精品嫩草影院av蜜臀| 国产成人激情av| 国产精品女上位| 91视频91自| 午夜免费久久看| 欧美女孩性生活视频| 中文字幕中文字幕一区二区| 不卡一区二区在线| 伊人一区二区三区| 日韩一区二区三区在线视频| 韩国女主播一区| 亚洲视频香蕉人妖| 制服丝袜中文字幕亚洲| 高清成人免费视频| 一区二区三区不卡在线观看| 337p亚洲精品色噜噜狠狠| 久久精品国产精品亚洲红杏| 国产精品电影院| 91.麻豆视频| 9i看片成人免费高清| 视频在线在亚洲| 国产欧美精品一区aⅴ影院| 91麻豆国产在线观看| 看电视剧不卡顿的网站| 久久嫩草精品久久久久| 在线播放亚洲一区| 色综合久久中文字幕综合网| 精品亚洲成a人在线观看| 夜夜揉揉日日人人青青一国产精品| 欧美日韩不卡一区| 97se亚洲国产综合自在线| 蜜桃av噜噜一区二区三区小说| 中文字幕一区二区三区不卡在线 | 7777精品伊人久久久大香线蕉 | 久久99九九99精品| 亚洲国产日产av| 一区二区欧美在线观看| 亚洲国产成人私人影院tom| 精品少妇一区二区三区免费观看 | 国产一区二区三区最好精华液| 成人免费一区二区三区视频| 国产亚洲成aⅴ人片在线观看| 精品捆绑美女sm三区| 91精品国产色综合久久ai换脸| 欧美色大人视频| 制服视频三区第一页精品| 欧美不卡123| 国产精品久久久久影院亚瑟| 中文字幕精品一区二区三区精品| 91婷婷韩国欧美一区二区| 国产精品69久久久久水密桃| 国产成人av一区二区| 日本sm残虐另类| 美女精品自拍一二三四| 精品一区二区精品| 国产精品一二二区| 91视频免费播放| 欧美日韩精品专区| 久久久久免费观看| 亚洲一区二区三区四区五区中文 | 91精品国产91热久久久做人人| 欧美另类videos死尸| 欧美天堂亚洲电影院在线播放| 99久久精品免费看国产免费软件| 91色porny在线视频| 欧美在线你懂的| 久久精品人人做人人爽人人| 亚洲精品菠萝久久久久久久| 日韩电影在线免费看| 成人深夜福利app| 日韩欧美123| 亚洲午夜免费视频| 成人午夜电影小说| 日韩欧美黄色影院| 亚洲国产一区二区三区青草影视| 国产xxx精品视频大全| 欧美一区二区在线免费播放| 亚洲欧美另类久久久精品| 全国精品久久少妇| 国产中文字幕精品| 日韩一区二区三区视频在线观看| 亚洲男人电影天堂| 成人av影视在线观看| 欧美高清在线一区二区| 亚洲成在人线在线播放| 91麻豆国产在线观看| 一区二区三区四区精品在线视频 | 91久久线看在观草草青青| 国产日产亚洲精品系列| 国产成人午夜片在线观看高清观看| 日韩免费在线观看| 狠狠狠色丁香婷婷综合久久五月| 欧美一区二区免费视频| 青青草国产成人99久久| 欧美成人一区二区三区| 国产永久精品大片wwwapp | 精品亚洲aⅴ乱码一区二区三区| 欧美一区二区久久久| 国产精品一区二区在线观看不卡| 久久久久成人黄色影片| 99精品久久只有精品| 亚洲综合图片区| 国产精品1区2区3区在线观看| 久久久亚洲午夜电影| 色综合天天综合网国产成人综合天 | 日韩亚洲欧美在线| 久草在线在线精品观看| 欧美精品久久久久久久久老牛影院 | 亚洲精品国产高清久久伦理二区| 欧美亚洲图片小说| 国产美女娇喘av呻吟久久| 一区二区成人在线| 欧美一区二区免费视频| 99久久婷婷国产综合精品 | jizz一区二区| 理论片日本一区| 亚洲精品网站在线观看| 久久色中文字幕| 欧美日韩精品一区二区在线播放| 国产福利不卡视频| 毛片av一区二区三区| 亚洲国产精品久久人人爱| 国产欧美日韩在线| 久久精品综合网| 日韩欧美国产麻豆| 3atv在线一区二区三区| 91黄色免费看| 欧美日韩在线亚洲一区蜜芽| 91日韩一区二区三区| 一本色道久久综合精品竹菊| jvid福利写真一区二区三区| 国产福利一区在线| 国产成人av一区| 成人成人成人在线视频| 懂色av一区二区三区免费看| 成人精品免费看| 成人app下载| 欧美日韩一区二区在线观看视频| 欧美在线免费观看视频| 色域天天综合网| 99久久国产综合精品色伊| 97久久超碰精品国产| 欧美亚洲国产bt| 欧美一区二区三区小说| 精品盗摄一区二区三区| 国产精品欧美一级免费| 亚洲一区免费观看| 国内精品国产成人国产三级粉色| 国产久卡久卡久卡久卡视频精品| 久久av资源网| av不卡免费电影| 精品日韩在线观看| 国产精品理论在线观看| 一区二区三区四区精品在线视频| 久久嫩草精品久久久久| 欧美一区二区三区系列电影|