国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 西乡县| 石家庄市| 东阿县| 正宁县| 汝阳县| 宁波市| 丹江口市| 揭西县| 西乡县| 鹰潭市| 花垣县| 万宁市| 元阳县| 九龙坡区| 泰来县| 九江市| 杭锦后旗| 彭泽县| 体育| 阿图什市| 敦煌市| 汕头市| 水城县| 奇台县| 金阳县| 秀山| 沂水县| 麻城市| 四川省| 威宁| 民乐县| 临夏市| 翁源县| 星子县| 岢岚县| 平武县| 友谊县| 淮北市| 三原县| 家居| 连南|