zoukankan      html  css  js  c++  java
  • Go语言加解密--AES简单实践

    AES加解密的简单实现,代码如下。

    package main
    
    
    import (
    	"crypto/aes"
    	"crypto/cipher"
    	"encoding/hex"
    	"fmt"
    )
    
    func main(){
    
    	nonce := "37b8e8a308c354048d245f6d"
    	key := "AES256Key-32Characters1234567890"
    	plainText := "172.10.99.88"
    	cipherText :=	ExampleNewGCM_encrypt(plainText, key, nonce)
    	newPlain := ExampleNewGCM_decrypt(cipherText, key, nonce)
    
    
    	fmt.Println("plain:", plainText)
    	fmt.Println("cipher:", cipherText)
    	fmt.Println("new plain:", newPlain)
    }
    
    func ExampleNewGCM_encrypt(src, k, n string)string {
    	// The key argument should be the AES key, either 16 or 32 bytes
    	// to select AES-128 or AES-256.
    	key := []byte(k)
    	plaintext := []byte(src)
    
    	block, err := aes.NewCipher(key)
    	if err != nil {
    		panic(err.Error())
    	}
    
    	nonce, _ := hex.DecodeString(n)
    
    	aesgcm, err := cipher.NewGCM(block)
    	if err != nil {
    		panic(err.Error())
    	}
    
    	ciphertext := aesgcm.Seal(nil, nonce, plaintext, nil)
    
    	return fmt.Sprintf("%x", ciphertext)
    }
    
    func ExampleNewGCM_decrypt(src, k, n string) string {
    	// The key argument should be the AES key, either 16 or 32 bytes
    	// to select AES-128 or AES-256.
    	key := []byte(k)
    	ciphertext, _ := hex.DecodeString(src)
    
    	nonce, _ := hex.DecodeString(n)
    
    	block, err := aes.NewCipher(key)
    	if err != nil {
    		panic(err.Error())
    	}
    
    	aesgcm, err := cipher.NewGCM(block)
    	if err != nil {
    		panic(err.Error())
    	}
    
    	plaintext, err := aesgcm.Open(nil, nonce, ciphertext, nil)
    	if err != nil {
    		panic(err.Error())
    	}
    
    	return string(plaintext)
    }
    
    

    Output:

    plain: 172.10.99.88
    cipher: 4456f9258c204906cbb2516e1fc78c3fbbf439e9e7d49189a391ee33
    new plain: 172.10.99.88

  • 相关阅读:
    SERV-U处于“域正离线”怎么办?
    在wampserver3.0.6中配置虚拟主机(设置二级域名)
    解决Win7系统新建选项中无记事本问题
    解决Windows Server 2008 R2安装WAMPSERVER3.0.6问题总结
    php实现定时任务的思路
    https配置for apache
    jquery传值
    有趣的em
    自我感觉良好的配搭
    正则基础整理
  • 原文地址:https://www.cnblogs.com/lanyangsh/p/8686014.html
Copyright © 2011-2022 走看看