encryptarticle.go 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package encrypt
  2. import (
  3. "app.yhyue.com/moapp/jybase/common"
  4. "net/url"
  5. "strings"
  6. )
  7. // 正文
  8. var SE = &SimpleEncrypt{Key: "topnet2015topnet2015"}
  9. var SE2 = &SimpleEncrypt{Key: "2017jianyu"}
  10. var SE3 = &SimpleEncrypt{Key: "entservice"}
  11. var SE4 = &SimpleEncrypt{Key: "standardApi"}
  12. // 百度
  13. var BSE = &SimpleEncrypt{Key: "HNtopnet2017jy"}
  14. var BSE2 = &SimpleEncrypt{Key: "TOP2017jianyu"}
  15. // 订阅推送邮件
  16. var ESE = &SimpleEncrypt{Key: "PEjy2018topnet"}
  17. var ESE2 = &SimpleEncrypt{Key: "TopnetJy2018Pe"}
  18. // 首页
  19. var ISE = &SimpleEncrypt{Key: "Indexjy2021topnet"}
  20. var ISE2 = &SimpleEncrypt{Key: "TopnetJy2021Pe"}
  21. // 通用加密
  22. func CommonEncodeArticle(stype string, keys ...string) (id string) {
  23. switch stype {
  24. case "content":
  25. id = BEncodeArticleId2ByCheck("A", SE, SE2, keys...)
  26. case "bdprivate":
  27. id = BEncodeArticleId2ByCheck("B", BSE, BSE2, keys...)
  28. case "mailprivate":
  29. id = BEncodeArticleId2ByCheck("C", ESE, ESE2, keys...)
  30. case "indexcontent":
  31. id = BEncodeArticleId2ByCheck("D", ISE, ISE2, keys...)
  32. case "standardapi":
  33. id = BEncodeArticleId2ByCheck("E", SE2, SE4, keys...)
  34. }
  35. return
  36. }
  37. // 通用解密
  38. func CommonDecodeArticle(stype string, id string) (res []string) {
  39. switch stype {
  40. case "content", "bdcontent":
  41. res = BDecodeArticleId2ByCheck(id, SE, SE2)
  42. case "bdprivate":
  43. res = BDecodeArticleId2ByCheck(id, BSE, BSE2)
  44. case "mailprivate":
  45. res = BDecodeArticleId2ByCheck(id, ESE, ESE2)
  46. case "indexcontent":
  47. res = BDecodeArticleId2ByCheck(id, ISE, ISE2)
  48. case "advancedProject":
  49. res = BDecodeArticleId2ByCheck(id, SE, SE2)
  50. case "entservice":
  51. res = []string{SE3.DecodeString(id)}
  52. case "standardapi":
  53. res = BDecodeArticleId2ByCheck(id, SE2, SE4)
  54. }
  55. return
  56. }
  57. // 短地址加密,二次加密带校验和
  58. func BEncodeArticleId2ByCheck(h string, s1, s2 *SimpleEncrypt, keys ...string) string {
  59. kstr := strings.Join(keys, ",")
  60. kstr = s1.EncodeStringByCheck(kstr)
  61. return url.QueryEscape(h + common.GetLetterRandom(2) + s2.EncodeStringByCheck(kstr))
  62. }
  63. // 短地址解密,二次解密带校验和
  64. func BDecodeArticleId2ByCheck(id string, s1, s2 *SimpleEncrypt) []string {
  65. if !strings.Contains(id, "+") { //新加密算法解密
  66. id, _ = url.QueryUnescape(id)
  67. }
  68. kstr := s2.DecodeStringByCheck(id[3:])
  69. return strings.Split(s1.DecodeStringByCheck(kstr), ",")
  70. }