utils

package module
v0.0.3 Latest Latest
Warning

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

Go to latest
Published: Apr 23, 2021 License: MIT Imports: 32 Imported by: 26

README

Go-Utils

常用的助手函数

若有直接引用的, 会在函数定义或 README 中注明来源, 保留 LICENSE, 感谢之!

安装

go get github.com/fufuok/utils

使用

var s string
s = utils.GetString(nil)            // ""
s = utils.GetString(nil, "default") // "default"
s = utils.GetString([]byte("ff"))   // "ff"
s = utils.GetString(true)           // "true"

x := utils.AddString(s, "OK") // "trueOK"

b := utils.S2B(x)               // []byte("trueOK")
s = utils.B2S(b)                // "trueOK"
f := utils.CopyString(s)        // 不可变字符串
u := string(b)                  // 标准转换
b[0] = 'F'                      // 注意: 底层数组变化会引起 s 发生改变
fmt.Println(string(b), s, f, u) // "FrueOK" "FrueOK" "trueOK" "trueOK"

x = utils.AesCBCEnPKCS7StringHex("myData", "myKey")
fmt.Println(x)

x = utils.UUIDString()
fmt.Println(x)  // 04a49f17-8c37-44f7-a9c5-ea291c3736d7
x = utils.UUIDSimple()
fmt.Println(x)  // 16123e98b35a4cea8e9cc127f379ff52
x = utils.UUIDShort()
fmt.Println(x)  // Mw4hP7t9bnMMczU2AvyorU

x = base58.Encode([]byte("Test data"))
fmt.Println(x)  // 25JnwSn7XKfNQ
x = utils.B2S(base58.Decode("25JnwSn7XKfNQ"))
fmt.Println(x)  // Test data

choice :=utils.WeightedChoice([]utils.TChoice{
    {"A", 5},
    {"B", 3},
    {"C", 2},
    {"D", 0},
}...)
fmt.Println(choice.String())  // {"Item":"B","Weight":3}

items := []interface{}{"Item.1", "Item.2", "Item.3", "Item.4"}
weights := []int{1, 2, 3, 100}
idx := utils.WeightedChoiceWeightsIndex(weights)
fmt.Println(items[idx])  // Item.4

itemMap := map[interface{}]int{"Item.1": 1, "Item.2": 2, "Item.3": 3, "Item.4": 100}
item := utils.WeightedChoiceMap(itemMap)
fmt.Println(item)  // Item.4

...

加解密小工具

见: envtools

获取内外网 IP 小工具

见: myip

或: https://github.com/fufuok/myip

编码解码 base58

见: base58

或: https://github.com/fufuok/basex

JSON

json 使用 gin 类似的可选组织方式:

  • go build . 默认使用 json-iterator/go
  • go build -tags=gojson. 使用标准 JSON 库 encoding/json
  • go build -tags=go_json . 使用 goccy/go-json (暂不成熟, 观望中)

ff

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AddString

func AddString(s ...string) string

拼接字符串

func AddStringBytes

func AddStringBytes(s ...string) []byte

拼接字符串, 返回 bytes from bytes.Join()

func AesCBCDeB58 added in v0.0.3

func AesCBCDeB58(s, key string) []byte

AES 解密, ZerosPadding

func AesCBCDeB64

func AesCBCDeB64(s, key string) []byte

AES 解密, ZerosPadding

func AesCBCDeHex

func AesCBCDeHex(s, key string) []byte

AES 解密, ZerosPadding

func AesCBCDePKCS7B58 added in v0.0.3

func AesCBCDePKCS7B58(s, key string) []byte

AES 解密, Pkcs7Padding

func AesCBCDePKCS7B64

func AesCBCDePKCS7B64(s, key string) []byte

AES 解密, Pkcs7Padding

func AesCBCDePKCS7Hex

func AesCBCDePKCS7Hex(s, key string) []byte

AES 解密, Pkcs7Padding

func AesCBCDePKCS7StringB58 added in v0.0.3

func AesCBCDePKCS7StringB58(s, key string) string

AES 解密, Pkcs7Padding

func AesCBCDePKCS7StringB64

func AesCBCDePKCS7StringB64(s, key string) string

AES 解密, Pkcs7Padding

func AesCBCDePKCS7StringHex

func AesCBCDePKCS7StringHex(s, key string) string

AES 解密, Pkcs7Padding

func AesCBCDeStringB58 added in v0.0.3

func AesCBCDeStringB58(s, key string) string

AES 解密, ZerosPadding

func AesCBCDeStringB64

func AesCBCDeStringB64(s, key string) string

AES 解密, ZerosPadding

func AesCBCDeStringHex

func AesCBCDeStringHex(s, key string) string

AES 解密, ZerosPadding

func AesCBCDecrypt

func AesCBCDecrypt(asPKCS7 bool, ciphertext, key []byte, ivs ...[]byte) (plaintext []byte)

AES-CBC 解密

func AesCBCDecryptE added in v0.0.3

func AesCBCDecryptE(asPKCS7 bool, ciphertext, key []byte, ivs ...[]byte) ([]byte, error)

AES-CBC 解密, 密码分组链接模式 (Cipher Block Chaining (CBC))

func AesCBCEnB58 added in v0.0.3

func AesCBCEnB58(b, key []byte) string

AES 加密, ZerosPadding

func AesCBCEnB64

func AesCBCEnB64(b, key []byte) string

AES 加密, ZerosPadding

func AesCBCEnHex

func AesCBCEnHex(b, key []byte) string

AES 加密, ZerosPadding

func AesCBCEnPKCS7B58 added in v0.0.3

func AesCBCEnPKCS7B58(b, key []byte) string

AES 加密, Pkcs7Padding

func AesCBCEnPKCS7B64

func AesCBCEnPKCS7B64(b, key []byte) string

AES 加密, Pkcs7Padding

func AesCBCEnPKCS7Hex

func AesCBCEnPKCS7Hex(b, key []byte) string

AES 加密, Pkcs7Padding

func AesCBCEnPKCS7StringB58 added in v0.0.3

func AesCBCEnPKCS7StringB58(s, key string) string

AES 加密, Pkcs7Padding

func AesCBCEnPKCS7StringB64

func AesCBCEnPKCS7StringB64(s, key string) string

AES 加密, Pkcs7Padding

func AesCBCEnPKCS7StringHex

func AesCBCEnPKCS7StringHex(s, key string) string

AES 加密, Pkcs7Padding

func AesCBCEnStringB58 added in v0.0.3

func AesCBCEnStringB58(s, key string) string

AES 加密, ZerosPadding

func AesCBCEnStringB64

func AesCBCEnStringB64(s, key string) string

AES 加密, ZerosPadding

func AesCBCEnStringHex

func AesCBCEnStringHex(s, key string) string

AES 加密, ZerosPadding

func AesCBCEncrypt

func AesCBCEncrypt(asPKCS7 bool, plaintext, key []byte, ivs ...[]byte) (ciphertext []byte)

AES-CBC 加密

func AesCBCEncryptE added in v0.0.3

func AesCBCEncryptE(asPKCS7 bool, plaintext, key []byte, ivs ...[]byte) ([]byte, error)

AES-CBC 加密, 密码分组链接模式 (Cipher Block Chaining (CBC)) key 长度分别是 16 (AES-128), 24 (AES-192?), 32 (AES-256?) asPKCS7: false (ZerosPadding), true (Pkcs7Padding)

func AesGCMDeB58 added in v0.0.3

func AesGCMDeB58(s, key, nonce string) []byte

AES 解密

func AesGCMDeB64 added in v0.0.3

func AesGCMDeB64(s, key, nonce string) []byte

AES 解密

func AesGCMDeHex added in v0.0.3

func AesGCMDeHex(s, key, nonce string) []byte

AES 解密

func AesGCMDeStringB58 added in v0.0.3

func AesGCMDeStringB58(s, key, nonce string) string

AES 解密

func AesGCMDeStringB64 added in v0.0.3

func AesGCMDeStringB64(s, key, nonce string) string

AES 解密

func AesGCMDeStringHex added in v0.0.3

func AesGCMDeStringHex(s, key, nonce string) string

AES 解密

func AesGCMDecrypt added in v0.0.3

func AesGCMDecrypt(ciphertext, key, nonce []byte) (plaintext []byte)

AES-GCM 解密

func AesGCMDecryptWithNonce added in v0.0.3

func AesGCMDecryptWithNonce(ciphertext, key, nonce, additionalData []byte) ([]byte, error)

AES-GCM 解密, (Galois/Counter Mode (GCM))

func AesGCMEnB58 added in v0.0.3

func AesGCMEnB58(b, key []byte) (string, string)

AES 加密

func AesGCMEnB64 added in v0.0.3

func AesGCMEnB64(b, key []byte) (string, string)

AES 加密

func AesGCMEnHex added in v0.0.3

func AesGCMEnHex(b, key []byte) (string, string)

AES 加密

func AesGCMEnStringB58 added in v0.0.3

func AesGCMEnStringB58(s, key string) (string, string)

AES 加密

func AesGCMEnStringB64 added in v0.0.3

func AesGCMEnStringB64(s, key string) (string, string)

AES 加密

func AesGCMEnStringHex added in v0.0.3

func AesGCMEnStringHex(s, key string) (string, string)

AES 加密

func AesGCMEncrypt added in v0.0.3

func AesGCMEncrypt(plaintext, key []byte) (ciphertext []byte, nonce []byte)

AES-GCM 加密

func AesGCMEncryptWithNonce added in v0.0.3

func AesGCMEncryptWithNonce(plaintext, key, nonce, additionalData []byte) ([]byte, []byte, error)

AES-GCM 加密, (Galois/Counter Mode (GCM)) key 长度分别是 16 (AES-128), 32 (AES-256)

func AssertEqual

func AssertEqual(t testing.TB, expected, actual interface{}, description ...string)

AssertEqual checks if values are equal Ref: gofiber/utils

func AssertPanics

func AssertPanics(t *testing.T, title string, f func())

断言 panic

func B2S

func B2S(b []byte) string

BytesToString

func B64Decode

func B64Decode(s string) []byte

Base64 解码

func B64Encode

func B64Encode(b []byte) string

Base64 编码

func B64UrlDecode

func B64UrlDecode(s string) []byte

Base64 解码

func B64UrlEncode

func B64UrlEncode(b []byte) string

Base64 解码, 安全 URL, 替换: "+/" 为 "-_"

func CallPath

func CallPath() string

运行时路径

func CopyBytes

func CopyBytes(b []byte) []byte

Immutable, []byte to []byte

func CopyString

func CopyString(s string) string

Immutable, string to string

func Decrypt

func Decrypt(value, secret string) string

解密

func DesCBCDeB58 added in v0.0.3

func DesCBCDeB58(s, key string) []byte

DES 解密, ZerosPadding

func DesCBCDeB64

func DesCBCDeB64(s, key string) []byte

DES 解密, ZerosPadding

func DesCBCDeHex

func DesCBCDeHex(s, key string) []byte

DES 解密, ZerosPadding

func DesCBCDePKCS7B58 added in v0.0.3

func DesCBCDePKCS7B58(s, key string) []byte

DES 解密, Pkcs7Padding

func DesCBCDePKCS7B64

func DesCBCDePKCS7B64(s, key string) []byte

DES 解密, Pkcs7Padding

func DesCBCDePKCS7Hex

func DesCBCDePKCS7Hex(s, key string) []byte

DES 解密, Pkcs7Padding

func DesCBCDePKCS7StringB58 added in v0.0.3

func DesCBCDePKCS7StringB58(s, key string) string

DES 解密, Pkcs7Padding

func DesCBCDePKCS7StringB64

func DesCBCDePKCS7StringB64(s, key string) string

DES 解密, Pkcs7Padding

func DesCBCDePKCS7StringHex

func DesCBCDePKCS7StringHex(s, key string) string

DES 解密, Pkcs7Padding

func DesCBCDeStringB58 added in v0.0.3

func DesCBCDeStringB58(s, key string) string

DES 解密, ZerosPadding

func DesCBCDeStringB64

func DesCBCDeStringB64(s, key string) string

DES 解密, ZerosPadding

func DesCBCDeStringHex

func DesCBCDeStringHex(s, key string) string

DES 解密, ZerosPadding

func DesCBCDecrypt

func DesCBCDecrypt(asPKCS7 bool, ciphertext, key []byte, ivs ...[]byte) (plaintext []byte)

AES-CBC 解密

func DesCBCDecryptE added in v0.0.3

func DesCBCDecryptE(asPKCS7 bool, ciphertext, key []byte, ivs ...[]byte) ([]byte, error)

DES-CBC 解密, 密码分组链接模式 (Cipher Block Chaining (CBC))

func DesCBCEnB58 added in v0.0.3

func DesCBCEnB58(b, key []byte) string

DES 加密, ZerosPadding

func DesCBCEnB64

func DesCBCEnB64(b, key []byte) string

DES 加密, ZerosPadding

func DesCBCEnHex

func DesCBCEnHex(b, key []byte) string

DES 加密, ZerosPadding

func DesCBCEnPKCS7B58 added in v0.0.3

func DesCBCEnPKCS7B58(b, key []byte) string

DES 加密, Pkcs7Padding

func DesCBCEnPKCS7B64

func DesCBCEnPKCS7B64(b, key []byte) string

DES 加密, Pkcs7Padding

func DesCBCEnPKCS7Hex

func DesCBCEnPKCS7Hex(b, key []byte) string

DES 加密, Pkcs7Padding

func DesCBCEnPKCS7StringB58 added in v0.0.3

func DesCBCEnPKCS7StringB58(s, key string) string

DES 加密, Pkcs7Padding

func DesCBCEnPKCS7StringB64

func DesCBCEnPKCS7StringB64(s, key string) string

DES 加密, Pkcs7Padding

func DesCBCEnPKCS7StringHex

func DesCBCEnPKCS7StringHex(s, key string) string

DES 加密, Pkcs7Padding

func DesCBCEnStringB58 added in v0.0.3

func DesCBCEnStringB58(s, key string) string

DES 加密, ZerosPadding

func DesCBCEnStringB64

func DesCBCEnStringB64(s, key string) string

DES 加密, ZerosPadding

func DesCBCEnStringHex

func DesCBCEnStringHex(s, key string) string

DES 加密, ZerosPadding

func DesCBCEncrypt

func DesCBCEncrypt(asPKCS7 bool, plaintext, key []byte, ivs ...[]byte) (ciphertext []byte)

AES-CBC 加密

func DesCBCEncryptE added in v0.0.3

func DesCBCEncryptE(asPKCS7 bool, plaintext, key []byte, ivs ...[]byte) ([]byte, error)

DES-CBC 加密, 密码分组链接模式 (Cipher Block Chaining (CBC)) key 长度固定为 8 asPKCS7: false (ZerosPadding), true (Pkcs7Padding)

func EncodeUUID added in v0.0.3

func EncodeUUID(id []byte) []byte

编码 UUID

func Encrypt

func Encrypt(value, secret string) string

加密 (密钥取 32 位 MD5, AES-CBC, base58)

func GetBytes

func GetBytes(v interface{}, defaultVal ...[]byte) []byte

先转为字符串再转为 []byte, 可选指定默认值

func GetInt

func GetInt(v interface{}, defaultInt ...int) int

获取 int 结果, 可选指定默认值(若给定了默认值,则返回正整数或 0)

func GetString

func GetString(v interface{}, defaultVal ...string) string

获取字符串结果, 可选指定默认值

func GetenvDecrypt

func GetenvDecrypt(key string, secret string) string

解密环境变量参数

func Hash

func Hash(b []byte, h hash.Hash) []byte

Hash

func Hmac

func Hmac(b []byte, key []byte, h func() hash.Hash) []byte

Hmac

func HmacSHA1

func HmacSHA1(b, key []byte) []byte

HmacSHA1

func HmacSHA1Hex

func HmacSHA1Hex(s, key string) string

HmacSHA1Hex

func HmacSHA256

func HmacSHA256(b, key []byte) []byte

HmacSHA256

func HmacSHA256Hex

func HmacSHA256Hex(s, key string) string

HmacSHA256Hex

func HmacSHA512

func HmacSHA512(b, key []byte) []byte

HmacSHA512

func HmacSHA512Hex

func HmacSHA512Hex(s, key string) string

HmacSHA512Hex

func InInts

func InInts(slice []int, n int) bool

检查整数是否存在于 slice

func InStrings

func InStrings(ss []string, s string) bool

检查字符串是否存在于 slice

func IsDir

func IsDir(s string) bool

目录是否存在

func IsExist

func IsExist(s string) bool

文件或目录是否存在

func IsFile

func IsFile(s string) bool

文件是否存在

func JoinBytes

func JoinBytes(b ...[]byte) []byte

拼接 []byte

func MD5

func MD5(b []byte) []byte

MD5

func MD5Hex

func MD5Hex(s string) string

字符串 MD5

func MD5Reader

func MD5Reader(r io.Reader) (string, error)

计算 MD5

func MD5Sum

func MD5Sum(filename string) (string, error)

文件 MD5

func MaxInt

func MaxInt(a, b int) int

整数取大值

func MinInt

func MinInt(a, b int) int

整数取小值

func MustBool

func MustBool(v interface{}) bool

强制转为 bool

func MustInt

func MustInt(v interface{}) int

强制转为整数 (int)

func MustJSON

func MustJSON(v interface{}) []byte

转 JSON 返回 []byte

func MustJSONString

func MustJSONString(v interface{}) string

转 JSON 返回 string

func MustString

func MustString(v interface{}) string

强制转为字符串

func Padding

func Padding(b []byte, bSize int, pkcs7 bool) []byte

填充

func RandBytes added in v0.0.3

func RandBytes(n int) []byte

随机 bytes

func RandHex added in v0.0.3

func RandHex(nHalf int) string

随机 Hex 编码字符串

func RandInt

func RandInt(min int, max int) int

(>=)m - (<)n 间随机整数

func RandString

func RandString(n int) string

随机字符串, 大小写字母数字 Ref: stackoverflow.icza

func Round

func Round(val float64, precision int) float64

Round 四舍五入, ROUND_HALF_UP 模式实现 返回将 val 根据指定精度 precision (十进制小数点后数字的数目) 进行四舍五入的结果 precision 也可以是负数或零 Ref: thinkeridea/go-extend

func RunPath

func RunPath() string

实际程序所在路径

func S2B

func S2B(s string) []byte

StringToBytes converts string to byte slice without a memory allocation. Ref: gin

func SearchInt

func SearchInt(slice []int, n int) int

搜索整数位置(左, 第一个)

func SearchString

func SearchString(ss []string, s string) int

搜索字符串位置(左, 第一个)

func SetenvEncrypt

func SetenvEncrypt(key, value, secret string) (string, error)

加密并设置环境变量

func Sha1

func Sha1(b []byte) []byte

Sha1

func Sha1Hex

func Sha1Hex(s string) string

Sha1Hex

func Sha256

func Sha256(b []byte) []byte

Sha256

func Sha256Hex

func Sha256Hex(s string) string

Sha256Hex

func Sha512

func Sha512(b []byte) []byte

Sha512

func Sha512Hex

func Sha512Hex(s string) string

Sha512Hex

func Str2Bytes added in v0.0.3

func Str2Bytes(s string) (b []byte)

Ref: csdn.weixin_43705457

func String2Bytes added in v0.0.3

func String2Bytes(s string) (b []byte)

Ref: fasthttp

func StringToBytes added in v0.0.3

func StringToBytes(s string) (b []byte)

Ref: csdn.u010853261

func UUID added in v0.0.3

func UUID() []byte

随机 UUID, RFC4122, Version 4

func UUIDShort added in v0.0.3

func UUIDShort() string

随机 UUID, 短版, base58

func UUIDSimple added in v0.0.3

func UUIDSimple() string

随机 UUID, 无短横线

func UUIDString added in v0.0.3

func UUIDString() string

随机 UUID

func UnPadding

func UnPadding(b []byte, pkcs7 bool) []byte

去除填充

func WaitNextMinute

func WaitNextMinute()

下一分钟, 对齐时间, 0 秒

func WeightedChoiceIndex added in v0.0.3

func WeightedChoiceIndex(choices []TChoice) int

加权随机, 返回选中项的下标, -1 未选中任何项

func WeightedChoiceMap added in v0.0.3

func WeightedChoiceMap(choices map[interface{}]int) interface{}

加权随机, map[object]weight

func WeightedChoiceWeightsIndex added in v0.0.3

func WeightedChoiceWeightsIndex(weights []int) int

加权随机, 参数为权重值列表, 返回选中项的下标, -1 未选中任何项

Types

type TChoice added in v0.0.3

type TChoice struct {
	Item   interface{}
	Weight int
}

func WeightedChoice added in v0.0.3

func WeightedChoice(choices ...TChoice) TChoice

加权随机, 返回选中项

func (*TChoice) String added in v0.0.3

func (c *TChoice) String() string

Directories

Path Synopsis
Package base58 provides an API for working with modified base58 and Base58Check encodings.
Package base58 provides an API for working with modified base58 and Base58Check encodings.
环境变量加密工具 go run main.go -d=Fufu go run main.go -d="Fufu 777" go run main.go -d=Fufu -k=TestEnv go run main.go -k=TestEnv
环境变量加密工具 go run main.go -d=Fufu go run main.go -d="Fufu 777" go run main.go -d=Fufu -k=TestEnv go run main.go -k=TestEnv

Jump to

Keyboard shortcuts

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