国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Golang > 正文

Go語言實現AzDG可逆加密算法實例

2020-04-01 19:20:44
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Go語言實現AzDG可逆加密算法,實例分析了AzDG可逆加密算法的實現技巧,具有一定參考借鑒價值,需要的朋友可以參考下
 

本文實例講述了Go語言實現AzDG可逆加密算法。分享給大家供大家參考。具體實現方法如下:

 

復制代碼代碼如下:
package main

 

import (
 "fmt"
 "crypto/md5"
 "encoding/base64"
 "time"
)

var cipher = "密鑰"
var h = md5.New()

func cipherEncode(sourceText string) string { 
 h.Write([]byte(cipher))
 cipherHash := fmt.Sprintf("%x", h.Sum(nil))
 h.Reset()
 inputData := []byte(sourceText)
 loopCount := len(inputData)
 outData := make([]byte,loopCount)
 for i:= 0; i < loopCount ; i++ {
  outData[i] = inputData[i] ^ cipherHash[i%32]
 } 
 return fmt.Sprintf("%s", outData)
}

func encode(sourceText string) string { 
 h.Write([]byte(time.Now().Format("2006-01-02 15:04:05")))
 noise := fmt.Sprintf("%x", h.Sum(nil))
 h.Reset()
 inputData := []byte(sourceText)
 loopCount := len(inputData)
 outData := make([]byte,loopCount*2)
 
 for i, j := 0,0; i < loopCount ; i,j = i+1,j+1 {  
  outData[j] = noise[i%32]
  j++
  outData[j] = inputData[i] ^ noise[i%32]
 }
 
 return base64.StdEncoding.EncodeToString([]byte(cipherEncode(fmt.Sprintf("%s", outData))))
}

func decode(sourceText string) string {
 buf, err := base64.StdEncoding.DecodeString(sourceText)
 if err != nil {
  fmt.Println("Decode(%q) failed: %v", sourceText, err)
  return ""
 }
 inputData := []byte(cipherEncode(fmt.Sprintf("%s", buf)))
 loopCount := len(inputData)
 outData := make([]byte,loopCount)
 for i, j := 0,0; i < loopCount ; i,j = i+2,j+1 {  
  outData[j] = inputData[i] ^ inputData[i+1]
 }
 return fmt.Sprintf("%s", outData)
}

func main() {
        s := encode("張學友")
 fmt.Println(s)
 fmt.Println(decode(s))
}

 

希望本文所述對大家的Go語言程序設計有所幫助。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 昭觉县| 临西县| 毕节市| 玉田县| 芜湖县| 木兰县| 女性| 宝坻区| 那曲县| 东海县| 马鞍山市| 康乐县| 和林格尔县| 舟曲县| 安康市| 太原市| 北流市| 广州市| 清涧县| 楚雄市| 宁明县| 颍上县| 温宿县| 武鸣县| 利辛县| 灌阳县| 县级市| 英德市| 宁南县| 府谷县| 沅江市| 铜鼓县| 安远县| 綦江县| 林口县| 新河县| 南汇区| 承德市| 平舆县| 刚察县| 侯马市|