123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package util
- import (
- "net/url"
- "strings"
- )
- //正文
- var SE = &SimpleEncrypt{Key: "topnet2015topnet2015"}
- var SE2 = &SimpleEncrypt{Key: "2017jianyu"}
- //百度
- var BSE = &SimpleEncrypt{Key: "HNtopnet2017jy"}
- var BSE2 = &SimpleEncrypt{Key: "TOP2017jianyu"}
- //订阅推送邮件
- var ESE = &SimpleEncrypt{Key: "PEjy2018topnet"}
- var ESE2 = &SimpleEncrypt{Key: "TopnetJy2018Pe"}
- //通用加密
- func CommonEncodeArticle(stype string, keys ...string) (id string) {
- switch stype {
- case "content":
- id = BEncodeArticleId2ByCheck("A", SE, SE2, keys...)
- case "bdprivate":
- id = BEncodeArticleId2ByCheck("B", BSE, BSE2, keys...)
- case "mailprivate":
- id = BEncodeArticleId2ByCheck("C", ESE, ESE2, keys...)
- }
- return
- }
- //通用解密
- func CommonDecodeArticle(stype string, id string) (res []string) {
- switch stype {
- case "content":
- res = BDecodeArticleId2ByCheck(id, SE, SE2)
- case "bdprivate":
- res = BDecodeArticleId2ByCheck(id, BSE, BSE2)
- case "mailprivate":
- res = BDecodeArticleId2ByCheck(id, ESE, ESE2)
- }
- return
- }
- //短地址加密,二次加密带校验和
- func BEncodeArticleId2ByCheck(h string, s1, s2 *SimpleEncrypt, keys ...string) string {
- kstr := strings.Join(keys, ",")
- kstr = s1.EncodeStringByCheck(kstr)
- return url.QueryEscape(h + GetLetterRandom(2) + s2.EncodeStringByCheck(kstr))
- }
- //短地址解密,二次解密带校验和
- func BDecodeArticleId2ByCheck(id string, s1, s2 *SimpleEncrypt) []string {
- if !strings.Contains(id, "+") { //新加密算法解密
- id, _ = url.QueryUnescape(id)
- }
- kstr := s2.DecodeStringByCheck(id[3:])
- return strings.Split(s1.DecodeStringByCheck(kstr), ",")
- }
|