• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

Go语言版的AzDG可逆加密演算法

go 水墨上仙 2316次浏览

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语言版的AzDG可逆加密演算法
喜欢 (1)
加载中……