mirror of
https://github.com/mindoc-org/mindoc.git
synced 2025-09-24 13:19:31 +08:00
1、实现富文本编辑器
2、实现文档转换为PDF、MOBI、EPUB、Word格式 3、实现登录后跳转到来源地址
This commit is contained in:
70
utils/cryptil/cryptil.go
Normal file
70
utils/cryptil/cryptil.go
Normal file
@@ -0,0 +1,70 @@
|
||||
package cryptil
|
||||
|
||||
import (
|
||||
"crypto/hmac"
|
||||
"crypto/md5"
|
||||
"crypto/sha1"
|
||||
"encoding/base64"
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
//对称加密与解密之加密【从Beego中提取出来的】
|
||||
//@param value 需要加密的字符串
|
||||
//@param secret 加密密钥
|
||||
//@return encrypt 返回的加密后的字符串
|
||||
func Encrypt(value, secret string) (encrypt string) {
|
||||
vs := base64.URLEncoding.EncodeToString([]byte(value))
|
||||
timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
|
||||
h := hmac.New(sha1.New, []byte(secret))
|
||||
fmt.Fprintf(h, "%s%s", vs, timestamp)
|
||||
sig := fmt.Sprintf("%02x", h.Sum(nil))
|
||||
return strings.Join([]string{vs, timestamp, sig}, ".")
|
||||
}
|
||||
|
||||
//对称加密与解密之解密【从Beego中提取出来的】
|
||||
//@param value 需要解密的字符串
|
||||
//@param secret 密钥
|
||||
//@return decrypt 返回解密后的字符串
|
||||
func Decrypt(value, secret string) (decrypt string) {
|
||||
parts := strings.SplitN(value, ".", 3)
|
||||
if len(parts) != 3 {
|
||||
return ""
|
||||
}
|
||||
vs := parts[0]
|
||||
timestamp := parts[1]
|
||||
sig := parts[2]
|
||||
h := hmac.New(sha1.New, []byte(secret))
|
||||
fmt.Fprintf(h, "%s%s", vs, timestamp)
|
||||
if fmt.Sprintf("%02x", h.Sum(nil)) != sig {
|
||||
return ""
|
||||
}
|
||||
res, _ := base64.URLEncoding.DecodeString(vs)
|
||||
return string(res)
|
||||
}
|
||||
|
||||
//MD5加密
|
||||
//@param str 需要加密的字符串
|
||||
//@param salt 盐值
|
||||
//@return CryptStr 加密后返回的字符串
|
||||
func Md5Crypt(str string, salt ...interface{}) (CryptStr string) {
|
||||
if l := len(salt); l > 0 {
|
||||
slice := make([]string, l+1)
|
||||
str = fmt.Sprintf(str+strings.Join(slice, "%v"), salt...)
|
||||
}
|
||||
return fmt.Sprintf("%x", md5.Sum([]byte(str)))
|
||||
}
|
||||
|
||||
//SHA1加密
|
||||
//@param str 需要加密的字符串
|
||||
//@param salt 盐值
|
||||
//@return CryptStr 加密后返回的字符串
|
||||
func Sha1Crypt(str string, salt ...interface{}) (CryptStr string) {
|
||||
if l := len(salt); l > 0 {
|
||||
slice := make([]string, l+1)
|
||||
str = fmt.Sprintf(str+strings.Join(slice, "%v"), salt...)
|
||||
}
|
||||
return fmt.Sprintf("%x", sha1.Sum([]byte(str)))
|
||||
}
|
Reference in New Issue
Block a user