z1captcha

package module
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 7, 2024 License: Apache-2.0 Imports: 7 Imported by: 0

README

z1captcha

介绍

no store captcha

软件架构
  1. 实现思路
1   不使用存储验证
2   通过验证是否过期来判断验证码是否有效
3   验证码为0-9a-Z的62(b)个基本字符组成的字符串,长度为n,n>=4
4   前面n-1随机从基本字符中抽取
5   最后一位为校验位
6   校验位按下面规则生成。前n为在基本字符中的索引之后s,加上当前时间戳是第几个过期时段e等于s2,s2模b等于第n为的索引in
7   校验校验位的方法和生成方法类,只是需要把e和e-1分别进行验证,有一个通过就视为有效。不然可能出现,刚刚生成好验证码就进入到了下一个过期时段,导致验证失败的情况。所以验证码的有效时间是,大于有效期小于2倍有效期。即实践有效期为2倍有效期。所以对内的有效时间是t,而对内的有效时间为2t。我们在生成和校验时使用是用二分之一t,最终表现出来的有效时间就是t。
8   默认把timeout 分为5份TimeoutPeriodSteps=5,就可以保证有效的超时时间tt满足,4/5t <= tt < t



安装教程
  1. xxxx
  2. xxxx
  3. xxxx
使用说明
  1. read test/case_test.go
  2. xxxx
  3. xxxx
参与贡献
  1. Fork 本仓库
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request
特技
  1. 使用 Readme_XXX.md 来支持不同的语言,例如 Readme_en.md, Readme_zh.md
  2. Gitee 官方博客 blog.gitee.com
  3. 你可以 https://gitee.com/explore 这个地址来了解 Gitee 上的优秀开源项目
  4. GVP 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
  5. Gitee 官方提供的使用手册 https://gitee.com/help
  6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 https://gitee.com/gitee-stars/
log
  1. 使用 Readme_XXX.md 来支持不同的语言,例如 Readme_en.md, Readme_zh.md
  2. Gitee 官方博客 blog.gitee.com
  3. 你可以 https://gitee.com/explore 这个地址来了解 Gitee 上的优秀开源项目
  4. GVP 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
  5. Gitee 官方提供的使用手册 https://gitee.com/help
  6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 https://gitee.com/gitee-stars/
思路
1   理论上验证码就是一串数据的字符串,是唯一的。
2   验证码不能交叉使用,一般是在同一个session中使用。验证码验证的时候,需要和留存信息进行比对。如银行转账,若填写的用户名和账号留存的用户名不一致,就转不过去一样。
3   验证码生成的简单算法
    str=base64(md5(md5(now_ns))+(now/timeout)+password))
    captcha=str[0:captchaLength]

    md5(now_ns)标识使用位置,生成返回给客户端,验证的时候带过来。
    now/timeout标识使用时间,过期周期数e,生成的时候需要加n,验证的时候,需从e验证到e+n,timeout<有效时间<(n+1)timeout,建议n取4。若n取4,那么当超时时间为5timeout时,timeout<有效时间<5timeout,小的有效时间,就是timeout,为5timeout的百分之二十
    password标识软件系统
    base64把md5的每位16中可能变为64中可能。需要吧base64中的+和/剔除
4   这个是页面使用验证码,而非核销验证码,核销验证码验证时,一定要核对其它信息


Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Generate

func Generate(opt ...CaptchaOpt) (reqId, captcha, b64s string)

func GenerateText

func GenerateText(opt ...CaptchaOpt) (reqId, captcha string)

func Verify

func Verify(reqId, captcha string, opt ...CaptchaOpt) (ret bool)

Types

type CaptchaOpt

type CaptchaOpt struct {
	Length             int    // 验证码长度
	Password           string // 验证码密码
	Timeout            int64  // 验证码超时时间
	TimeoutPeriodSteps int64  // 验证码超时时间周期分步

	// Height png height in pixel.
	Height int
	// Width Captcha png width in pixel.
	Width int
	//NoiseCount text noise count.
	NoiseCount int
	//ShowLineOptions := OptionShowHollowLine | OptionShowSlimeLine | OptionShowSineLine .
	ShowLineOptions int
	//BgColor captcha image background color (optional)
	BgColor *color.RGBA
}

func GetCaptchaOpt

func GetCaptchaOpt(opt ...CaptchaOpt) (optRet CaptchaOpt)

Directories

Path Synopsis
test
rs

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL