package sms
|
|
|
|
import (
|
|
"bytes"
|
|
"crypto/md5"
|
|
"encoding/hex"
|
|
"git.tetele.net/tgo/helper"
|
|
"io/ioutil"
|
|
"log"
|
|
"net/http"
|
|
"net/url"
|
|
"strings"
|
|
|
|
"github.com/json-iterator/go"
|
|
"github.com/tjfoc/gmsm/sm3"
|
|
)
|
|
|
|
var json = jsoniter.ConfigCompatibleWithStandardLibrary
|
|
|
|
// 密码加密
|
|
func Md5Str(str ...string) string {
|
|
|
|
var build strings.Builder
|
|
if len(str) > 0 {
|
|
for _, v := range str {
|
|
build.WriteString(v)
|
|
}
|
|
} else {
|
|
return ""
|
|
}
|
|
|
|
h := md5.New()
|
|
h.Write([]byte(build.String())) // 需要加密的字符串
|
|
cipher2Str := h.Sum(nil)
|
|
sMd5 := hex.EncodeToString(cipher2Str) // 输出加密结果
|
|
return sMd5
|
|
}
|
|
|
|
/*
|
|
* 连接多个字符串
|
|
*/
|
|
func StringJoin(s ...string) string {
|
|
var build strings.Builder
|
|
if len(s) > 0 {
|
|
for _, v := range s {
|
|
build.WriteString(v)
|
|
}
|
|
}
|
|
|
|
return build.String()
|
|
}
|
|
|
|
/**
|
|
* post 请求
|
|
*/
|
|
func PostJsonData(url string, param interface{}, header ...map[string]string) ([]byte, error) {
|
|
httpClient := &http.Client{}
|
|
params, err := json.Marshal(param)
|
|
if err != nil {
|
|
return []byte(""), err
|
|
}
|
|
req, err := http.NewRequest("POST", url, bytes.NewBuffer(params))
|
|
if err != nil {
|
|
return []byte(""), err
|
|
}
|
|
|
|
req.Header.Set("Content-Type", "application/json")
|
|
|
|
if len(header) > 0 {
|
|
for _, item := range header {
|
|
for k, v := range item {
|
|
req.Header[k] = []string{v}
|
|
}
|
|
}
|
|
}
|
|
resp, err := httpClient.Do(req)
|
|
if err != nil {
|
|
return []byte(""), err
|
|
}
|
|
|
|
defer resp.Body.Close()
|
|
body, err := ioutil.ReadAll(resp.Body)
|
|
if err != nil {
|
|
return []byte(""), err
|
|
}
|
|
|
|
return body, nil
|
|
}
|
|
|
|
// ums验签
|
|
func UmsSetSign(data, header map[string]string,secretKey string) string {
|
|
str := helper.HttpBuildQuery(data)
|
|
// url encode
|
|
str = url.QueryEscape(str)
|
|
str = header["x-sp-code"] + header["x-app-key"] + secretKey + str + header["x-request-id"]
|
|
log.Println("加密前数据: ", str)
|
|
// ms3加密
|
|
hash := sm3.New()
|
|
hash.Write([]byte(str))
|
|
sign_byte := hash.Sum(nil)
|
|
sign := hex.EncodeToString(sign_byte)
|
|
log.Println("加密后数据: ", sign)
|
|
return sign
|
|
}
|