• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >Golang > Go语言实现AzDG可逆加密算法实例

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

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了go语言实例,go语言,go语言环境搭建,go语言程序设计,let it go 25种语言等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了Go语言实现AzDG可逆加密算法。分享给大家供大家参考。具体实现方法如下:

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))
}</div>

希望本文所述对大家的Go语言程序设计有所帮助。

</div>

您可能想查找下面的文章:

  • Go语言字典(map)用法实例分析【创建,填充,遍历,查找,修改,删除】
  • Go语言实现的排列组合问题实例(n个数中取m个)
  • Go语言正则表达式用法实例小结【查找、匹配、替换等】
  • Go语言实现类似c++中的多态功能实例
  • GO语言的IO方法实例小结
  • go语言中的interface使用实例
  • go语言使用scp的方法实例分析
  • go语言简单的处理http请求的函数实例
  • Go语言实现顺序存储的线性表实例
  • go语言实现一个最简单的http文件服务器实例

相关文章

  • 解决Golang在Web开发时前端莫名出现的空白换行
  • go语言实现抓取高清图片
  • golang 函数以及函数和方法的详解及区别
  • go语言中的interface使用实例
  • 深入解析Go语言中for循环的写法
  • Go语言实现机器大小端判断代码分享
  • Golang学习笔记(三):控制流
  • 浅析Go语言中的Range关键字
  • Go语言中函数的参数传递与调用的基本方法
  • Go语言实现AzDG可逆加密算法实例

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Go语言服务器开发实现最简单HTTP的GET与POST接口
    • 举例详解Go语言中os库的常用函数用法
    • Go语言算法之寻找数组第二大元素的方法
    • Go语言中的Array、Slice、Map和Set使用详解
    • GO语言常用的文件读取方式
    • Go语言中关闭带缓冲区的频道实例分析
    • GO语言延迟函数defer用法分析
    • Go语言实现的web爬虫实例
    • 浅谈Go语言的空标示符
    • GO语言异常处理机制panic和recover分析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有