mirror of
https://gitee.com/rulego/streamsql.git
synced 2025-07-07 08:20:53 +00:00
110 lines
2.5 KiB
Go
110 lines
2.5 KiB
Go
package functions
|
|
|
|
import (
|
|
"crypto/md5"
|
|
"crypto/sha1"
|
|
"crypto/sha256"
|
|
"crypto/sha512"
|
|
"fmt"
|
|
)
|
|
|
|
// Md5Function 计算MD5哈希值
|
|
type Md5Function struct {
|
|
*BaseFunction
|
|
}
|
|
|
|
func NewMd5Function() *Md5Function {
|
|
return &Md5Function{
|
|
BaseFunction: NewBaseFunction("md5", TypeString, "哈希函数", "计算MD5哈希值", 1, 1),
|
|
}
|
|
}
|
|
|
|
func (f *Md5Function) Validate(args []interface{}) error {
|
|
return f.ValidateArgCount(args)
|
|
}
|
|
|
|
func (f *Md5Function) Execute(ctx *FunctionContext, args []interface{}) (interface{}, error) {
|
|
str, ok := args[0].(string)
|
|
if !ok {
|
|
return nil, fmt.Errorf("md5 requires string input")
|
|
}
|
|
|
|
hash := md5.Sum([]byte(str))
|
|
return fmt.Sprintf("%x", hash), nil
|
|
}
|
|
|
|
// Sha1Function 计算SHA1哈希值
|
|
type Sha1Function struct {
|
|
*BaseFunction
|
|
}
|
|
|
|
func NewSha1Function() *Sha1Function {
|
|
return &Sha1Function{
|
|
BaseFunction: NewBaseFunction("sha1", TypeString, "哈希函数", "计算SHA1哈希值", 1, 1),
|
|
}
|
|
}
|
|
|
|
func (f *Sha1Function) Validate(args []interface{}) error {
|
|
return f.ValidateArgCount(args)
|
|
}
|
|
|
|
func (f *Sha1Function) Execute(ctx *FunctionContext, args []interface{}) (interface{}, error) {
|
|
str, ok := args[0].(string)
|
|
if !ok {
|
|
return nil, fmt.Errorf("sha1 requires string input")
|
|
}
|
|
|
|
hash := sha1.Sum([]byte(str))
|
|
return fmt.Sprintf("%x", hash), nil
|
|
}
|
|
|
|
// Sha256Function 计算SHA256哈希值
|
|
type Sha256Function struct {
|
|
*BaseFunction
|
|
}
|
|
|
|
func NewSha256Function() *Sha256Function {
|
|
return &Sha256Function{
|
|
BaseFunction: NewBaseFunction("sha256", TypeString, "哈希函数", "计算SHA256哈希值", 1, 1),
|
|
}
|
|
}
|
|
|
|
func (f *Sha256Function) Validate(args []interface{}) error {
|
|
return f.ValidateArgCount(args)
|
|
}
|
|
|
|
func (f *Sha256Function) Execute(ctx *FunctionContext, args []interface{}) (interface{}, error) {
|
|
str, ok := args[0].(string)
|
|
if !ok {
|
|
return nil, fmt.Errorf("sha256 requires string input")
|
|
}
|
|
|
|
hash := sha256.Sum256([]byte(str))
|
|
return fmt.Sprintf("%x", hash), nil
|
|
}
|
|
|
|
// Sha512Function 计算SHA512哈希值
|
|
type Sha512Function struct {
|
|
*BaseFunction
|
|
}
|
|
|
|
func NewSha512Function() *Sha512Function {
|
|
return &Sha512Function{
|
|
BaseFunction: NewBaseFunction("sha512", TypeString, "哈希函数", "计算SHA512哈希值", 1, 1),
|
|
}
|
|
}
|
|
|
|
func (f *Sha512Function) Validate(args []interface{}) error {
|
|
return f.ValidateArgCount(args)
|
|
}
|
|
|
|
func (f *Sha512Function) Execute(ctx *FunctionContext, args []interface{}) (interface{}, error) {
|
|
str, ok := args[0].(string)
|
|
if !ok {
|
|
return nil, fmt.Errorf("sha512 requires string input")
|
|
}
|
|
|
|
hash := sha512.Sum512([]byte(str))
|
|
return fmt.Sprintf("%x", hash), nil
|
|
}
|