package encrypt

import (
	"math/rand"
	"unsafe"
)

const lettersString = "0123456789abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"

// 字符串长度
const number = 16

/*
16位码,前15位随机字符串,最后一位通过前15位字符串计算校验生成
*/

func LotteryEncryptEncode() string {
	b := make([]byte, number)
	var sum byte
	for i := 0; i < number-1; i++ {
		b[i] = lettersString[rand.Int63()%int64(len(lettersString))]
		sum += b[i]
	}
	b[number-1] = lettersString[sum%byte(len(lettersString))]
	return *(*string)(unsafe.Pointer(&b))
}

func LotteryEncryptDecode(str string) bool {
	var sum byte
	for i := 0; i < len(str)-1; i++ {
		sum += str[i]
	}
	if lettersString[sum%byte(len(lettersString))] != str[len(str)-1] {
		return false
	}
	return true
}