auth

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Apr 12, 2023 License: AGPL-3.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AesDecryptECB

func AesDecryptECB(ciphertext []byte, key []byte) ([]byte, error)

AesDecryptECB 解密数据

// 解密数据
decryptedPlaintext, err := auth.AesDecryptECB(ciphertext, key)
if err != nil {
	panic(err)
}
fmt.Println("Decrypted plaintext:", string(decryptedPlaintext))

func AesEncryptECB

func AesEncryptECB(plaintext []byte, key []byte) ([]byte, error)

AesEncryptECB 加密数据 加密模式ECB

// 生成随机的AES密钥
key, err := auth.GenerateAESECBKey(16)
if err != nil {
	panic(err)
}
fmt.Println("Generated AES key:", hex.EncodeToString(key))
// 加密数据
plaintext := []byte("Hello, world!")
ciphertext, err := auth.AesEncryptECB(plaintext, key)
// 将加密后的数据编码为 base64 字符串
ciphertextBase64 := base64.StdEncoding.EncodeToString(ciphertext)
// 输出加密后的数据
fmt.Println("Ciphertext (Base64):", ciphertextBase64)

func CheckPasswordHash

func CheckPasswordHash(password, hash string) bool

CheckPasswordHash 密码验证

// 比较密码和哈希值是否匹配

passwordMatch := CheckPasswordHash(password, hashedPassword)
if !passwordMatch {
	// 密码与哈希值不匹配
}

func DecryptAESCFB

func DecryptAESCFB(key []byte, ciphertext string) ([]byte, error)

DecryptAESCFB 解密数据

// 解密数据
decryptedPlaintext, err := auth.DecryptAES(key, ciphertext)
if err != nil {
    panic(err)
}
fmt.Println("Decrypted plaintext:", string(decryptedPlaintext))

func EncryptAESCFB

func EncryptAESCFB(key []byte, plaintext []byte) (string, error)

EncryptAESCFB 加密数据 加密模式CFB

// 生成随机的AES密钥
key, err := auth.GenerateAESKey()
if err != nil {
    panic(err)
}
fmt.Println("Generated AES key:", key)
// 加密数据
plaintext := []byte("Hello, world!")
ciphertext, err := auth.EncryptAES(key, plaintext)
if err != nil {
    panic(err)
}
fmt.Println("Encrypted ciphertext:", ciphertext)

func GenToken

func GenToken(secret string, duration time.Duration, claims jwt.MapClaims) (string, error)

GenToken 生成JWT

secret := "mySecretKey"
duration := time.Hour * 24 * 7 // 1 week
// 生成 JWT
claims := jwt.MapClaims{
	"iss": "myapp",                 // 签发人
	"sub": "12345",                 // 主题
	"nbf": time.Now().Unix(),       // 生效时间
	"custom_field": "custom_value", // 自定义字段
}
tokenString, err := generateToken(secret, duration, claims)
if err != nil {
	panic(err)
}
fmt.Printf("生成的 token: %s\n", tokenString)

func GenerateAESCFBKey

func GenerateAESCFBKey(size int) ([]byte, error)

GenerateAESCFBKey 生成一个随机的AES密钥

	密钥长度必须是 16、24 或 32 字节,分别对应 AES-128、AES-192 和 AES-256 算法。
	密钥必须是随机的,不应该是固定的字符串。
	密钥不应该使用单向散列函数(如 SHA-256)等进行转换,因为这会降低密钥的熵。
	密钥应该足够长和复杂,以提高破解的难度。
	// 生成随机的AES密钥
	key, err := auth.GenerateAESKey()
	if err != nil {
		panic(err)
	}
	fmt.Println("Generated AES key:", hex.EncodeToString(key))
	// 加密数据
	keyString := hex.EncodeToString(key)
    fmt.Println("转生产String",keyString)
	keyListByte, _ := hex.DecodeString(key2)
    fmt.Println("转生产[]Byte",keyListByte)

func GenerateAESECBKey

func GenerateAESECBKey(length int) ([]byte, error)

GenerateAESECBKey 生成一个随机的AES ECB密钥

func HashPassword

func HashPassword(password string) (string, error)

HashPassword 加密

password := "myPassword123"
// 将密码哈希
hashedPassword, err := HashPassword(password)
if err != nil {
	// 哈希过程中发生错误
}

func MD5

func MD5(str []byte, b ...byte) string

func MD5Salt

func MD5Salt(password, salt string) string

MD5Salt 加盐加密 比不加盐安全性高,但是也不足够安全

func ParseToken

func ParseToken(tokenString string, secret string) (jwt.MapClaims, error)

ParseToken 解析JWT

    secret := "mySecretKey"
	// 解析 JWT
	claims, err = parseToken(tokenString, secret)
	if err != nil {
		panic(err)
	}
	fmt.Printf("解析的 token: %+v\n", claims)

func Pkcs7Padding

func Pkcs7Padding(data []byte, blockSize int) []byte

Pkcs7Padding 使用 PKCS7 填充方式对数据进行填充

Types

This section is empty.

Jump to

Keyboard shortcuts

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