Go语言实现AzDG可逆加密算法实例


本文向大家介绍Go语言实现AzDG可逆加密算法实例,包括了Go语言实现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语言程序设计有所帮助。

声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#yiidian.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。