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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? code.asp

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

Option Explicit

Call Com_CreatValidCode("SessionName")


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

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

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

	Randomize
	Dim i, ii, iii

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

	Response.ContentType = "Image/BMP"

	' 顏色的數據(字符,背景)
	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(淺藍色)

	' 字符的數據(可以自己修改,如果修改了尺寸,記得把前面的設定也改了)
	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"

	' 隨機產生字符
	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  ' 歷經所有行
	  For ii = 0 To codeLen-1  ' 歷經所有字
	   For iii = 1 To UnitWidth ' 歷經所有像素
	    If Rnd * 99 + 1 >= cOdds Then	' 逐行、逐字、逐像素地輸出圖像數據
	     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 干擾思想:在點陣范圍內隨機產生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	'干擾次數
		For f2=1 To tryCount	'避免刪除有效點超過上限的嘗試次數限制
			'隨機確定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	'所占行數
				step = (xOffSet+1) \ rows	'各行平均分配的點
				yu = (xOffSet+1) Mod rows	'剩余的點數
				ReDim ary2(rows-1)	'用來記錄剩余點的隨機分配
				While yu > 0
					i = int(Rnd*rows)
					ary2(i) = ary2(i)&"."		'被分配到的行則加一個字符"."
					yu = yu - 1
				WEnd
				iii = 0
				'將連線的點信息記錄到數組
				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
				'統計連線上有效點的數量
				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
			'如未超過有效點上限則跳出循環,執行干擾
			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 設置某點的字符
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 將數字轉為bmp需要的格式 lens是目標字節長度
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
%>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产综合久久久久久久| 91麻豆高清视频| 久久久久国产成人精品亚洲午夜| 色综合天天综合网国产成人综合天| 麻豆精品一区二区三区| 亚洲一区二区在线播放相泽| 国产精品美女一区二区三区| 精品精品国产高清a毛片牛牛| 在线视频欧美区| 美女视频黄频大全不卡视频在线播放| 亚洲柠檬福利资源导航| 国产农村妇女毛片精品久久麻豆| 国产suv一区二区三区88区| 国产在线一区观看| 蜜臀91精品一区二区三区| 日本伊人精品一区二区三区观看方式| 一区二区三区欧美日韩| 久久免费视频一区| 国产亚洲精品久| 日韩欧美色综合| 不卡欧美aaaaa| www.欧美色图| 99精品国产91久久久久久| 成人精品免费看| 91网站在线播放| 91成人在线精品| 欧美性xxxxx极品少妇| 欧美日韩一区中文字幕| 欧美喷潮久久久xxxxx| 欧美裸体bbwbbwbbw| 色吊一区二区三区| 91亚洲精品久久久蜜桃| 在线亚洲人成电影网站色www| 波多野结衣视频一区| 97成人超碰视| 在线不卡中文字幕| 一区二区三区在线免费视频| 国产农村妇女毛片精品久久麻豆 | 国模一区二区三区白浆| 国产一区二区看久久| 99在线视频精品| 欧美日韩免费视频| 在线不卡免费欧美| 日韩精品一区二区在线观看| 日本一区二区三区国色天香| 欧美性猛交xxxx乱大交退制版| 欧美日韩免费视频| 久久精品人人爽人人爽| 亚洲一区二区三区四区在线免费观看 | 久久男人中文字幕资源站| 国产日产欧美一区二区三区| 一区二区免费看| 美国十次综合导航| 99国产精品久久久久久久久久久| 欧美熟乱第一页| 欧美色老头old∨ideo| 精品国产一二三区| 亚洲电影你懂得| 国产91精品一区二区麻豆亚洲| 色av综合在线| 久久精品在线免费观看| 午夜精品国产更新| av动漫一区二区| 精品国产乱码久久久久久夜甘婷婷 | 国产精品午夜久久| 久久精品国产99| 91免费看视频| 国产欧美一区二区精品婷婷| 视频一区视频二区中文| 久久精品国产一区二区| 欧美猛男gaygay网站| 精品久久久网站| 一区二区三区高清在线| 成人a免费在线看| 欧美激情一区二区三区在线| 蜜臀精品久久久久久蜜臀| 国产毛片精品一区| 日韩一区二区在线观看视频播放| 亚洲女女做受ⅹxx高潮| 94-欧美-setu| 欧美国产日韩一二三区| 免费日本视频一区| 7878成人国产在线观看| 亚洲乱码中文字幕| 国产suv精品一区二区883| 久久综合九色综合欧美98| 一区二区三区91| 在线观看视频91| 国产日韩欧美高清| 韩国毛片一区二区三区| 欧美日韩国产片| 亚洲国产另类精品专区| 91福利小视频| 国产精品理伦片| 成人免费视频免费观看| 欧美激情一区二区三区蜜桃视频| 国产一区二区三区蝌蚪| 国产色91在线| 丰满少妇在线播放bd日韩电影| 久久久精品影视| 高清视频一区二区| 综合自拍亚洲综合图不卡区| 欧美亚洲愉拍一区二区| 综合中文字幕亚洲| 91蝌蚪porny九色| 亚洲一区二区三区在线| av在线播放一区二区三区| 亚洲女子a中天字幕| 99久久99久久久精品齐齐| 久久综合九色综合欧美98 | 麻豆成人免费电影| 欧美电影免费观看高清完整版| 韩国理伦片一区二区三区在线播放| 久久综合色一综合色88| 蜜芽一区二区三区| 精品久久久久久久久久久院品网| 国产99精品国产| 日韩女优制服丝袜电影| 国产成人免费视频一区| 一区二区三区精品在线观看| 精品一区二区三区香蕉蜜桃| 国产精品每日更新| 欧美日韩成人综合天天影院| 精品影视av免费| 亚洲欧美激情插| 欧洲亚洲精品在线| 日韩成人伦理电影在线观看| 日韩精品在线一区二区| 国产一区二区三区日韩 | 美国欧美日韩国产在线播放| 2020国产精品| 欧美在线高清视频| 激情伊人五月天久久综合| 中文字幕综合网| 欧美一区二区三区四区五区| 免费成人在线观看视频| 亚洲欧美另类小说| 国产色综合一区| 51精品视频一区二区三区| 高清成人在线观看| 视频一区二区三区入口| ...xxx性欧美| 综合中文字幕亚洲| 久久综合色综合88| 7777精品伊人久久久大香线蕉超级流畅 | 一区二区在线观看免费视频播放| 日韩免费看的电影| 欧美天堂亚洲电影院在线播放| 91网址在线看| 国产69精品久久久久毛片| 男人操女人的视频在线观看欧美| 亚洲男人的天堂在线aⅴ视频| 欧美成人女星排名| 欧美区在线观看| 国产999精品久久久久久绿帽| 黑人精品欧美一区二区蜜桃 | 午夜天堂影视香蕉久久| 国产精品久久777777| 国产精品久久久久影院亚瑟| 国产亚洲制服色| 久久久久久久综合| 制服视频三区第一页精品| 在线观看日韩毛片| 欧洲视频一区二区| 国产成+人+日韩+欧美+亚洲| 高清国产一区二区| 日韩福利视频导航| 图片区日韩欧美亚洲| 久久99精品国产| 成人免费视频免费观看| 成人黄色电影在线 | 国产成人免费在线视频| 99视频热这里只有精品免费| 在线观看国产91| 欧美丰满少妇xxxbbb| 精品久久久久久久久久久院品网| 国产视频亚洲色图| 一区二区欧美视频| 日韩精品成人一区二区三区| 久久99精品国产麻豆不卡| av不卡免费电影| 在线播放欧美女士性生活| 欧美极品另类videosde| 亚洲制服丝袜一区| 国产一区二区不卡老阿姨| 91香蕉视频黄| 精品噜噜噜噜久久久久久久久试看| 日本一区二区视频在线观看| 亚洲国产视频网站| 国产一区激情在线| 欧美日韩专区在线| 中文字幕欧美激情一区| 亚洲国产乱码最新视频 | 欧美日韩不卡视频| 国产三级精品三级| 人禽交欧美网站| 91视视频在线观看入口直接观看www| 欧美精品电影在线播放| 中文字幕av一区 二区| 美腿丝袜在线亚洲一区|