验证码生成和验证代码
时间: 2023-08-31 07:11:18 浏览: 42
以下是 Python 中生成和验证验证码的代码示例:
```python
import random
import string
from PIL import Image, ImageDraw, ImageFont
# 生成随机的验证码字符串
def generate_code(length=4):
chars = string.ascii_letters + string.digits # 字符集
code = ''.join(random.choices(chars, k=length)) # 随机生成验证码
return code
# 生成验证码图片
def generate_image(code, size=(120, 50)):
image = Image.new('RGB', size, (255, 255, 255)) # 创建图片对象
font = ImageFont.truetype('arial.ttf', 36) # 字体对象
draw = ImageDraw.Draw(image) # 图片绘制对象
# 绘制验证码字符串
for i, c in enumerate(code):
x = 20 + i * 30
y = 10
draw.text((x, y), c, font=font, fill=(0, 0, 0))
# 绘制干扰线
for i in range(10):
x1 = random.randint(0, size[0])
y1 = random.randint(0, size[1])
x2 = random.randint(0, size[0])
y2 = random.randint(0, size[1])
draw.line((x1, y1, x2, y2), fill=(0, 0, 0))
# 绘制干扰点
for i in range(100):
x = random.randint(0, size[0])
y = random.randint(0, size[1])
draw.point((x, y), fill=(0, 0, 0))
return image
# 验证验证码
def check_code(code, input_code):
return code.lower() == input_code.lower()
# 示例代码
if __name__ == '__main__':
code = generate_code() # 生成验证码字符串
image = generate_image(code) # 生成验证码图片
image.show() # 显示验证码图片
input_code = input('请输入验证码:') # 用户输入验证码
if check_code(code, input_code): # 验证验证码
print('验证码正确')
else:
print('验证码错误')
```
这段代码首先生成一个随机的验证码字符串,然后使用 PIL 库生成一个验证码图片。验证码图片包括验证码字符串、干扰线和干扰点。用户输入验证码后,使用 check_code() 函数验证是否正确。最后,可以根据验证结果给出相应的提示。