美文网首页
gf框架gaes使用

gf框架gaes使用

作者: 王哈哈就很棒 | 来源:发表于2020-01-10 21:31 被阅读0次

AES是分组密码,即将明文分成一组一组的,每组长度相等,每次加密一组数据,直到整个加密完成
AES分组的长度只能是128位,即分组为16个字节(每个字节8位),简单的说:明文P必须是长度为16的整数倍,字符串或数字。
密钥的长度可以使用128位、192位或256位,简单的说:密钥K可以是长度为16,24,32的字符串或数字。分别对应的加密轮数为10,12,14。
AES只是基本算法,实现AES有几个模式:ECB、CBC、CFB、OFB

package main

import (
    "fmt"
    "github.com/gogf/gf/crypto/gaes"
)

func main() {
    //aesEncrypt()
    //aesDecrypt()
    //aesEncryptCFB()
    //aesDecryptCFB()
    //aesPKCS5Padding()
    //aesPKCS5UnPadding()
    //aesZeroPadding()
    aesZeroUnPadding()
}

var key = []byte("1234567890123456")
var padding = 10

// 加密 cbc模式的别名
func aesEncrypt() {
    encrypt, err := gaes.Encrypt([]byte("要加密内容"), key)
    if err != nil {
        panic(err)
    }

    fmt.Println(encrypt)
    fmt.Printf("%s\n", encrypt)
}

// 解密 cbc模式的别名
func aesDecrypt() {
    decrypt, err := gaes.Decrypt([]byte{19, 5, 111, 198, 120, 205, 98, 42, 75, 155, 234, 75, 166, 18, 246, 7}, key)
    if err != nil {
        panic(err)
    }
    fmt.Println(decrypt)
    fmt.Printf("%s\n", decrypt)
}


// cfb模式
// 密钥必须为16/24/32位长度
func aesEncryptCFB() []byte {
    encryptCFB, err := gaes.EncryptCFB([]byte("要加密的内容"), key, &padding)
    if err != nil {
        panic(err)
    }

    fmt.Println(encryptCFB)
    fmt.Printf("%s\n", encryptCFB)
    return encryptCFB
}


// cfb 解密
func aesDecryptCFB() {
    cipherText := aesEncryptCFB()
    cfb, err := gaes.DecryptCFB(cipherText, key, padding)
    if err != nil {
        panic(err)
    }

    fmt.Println(cfb)
    fmt.Printf("%s\n", cfb)
}


// PKCS5Padding
func aesPKCS5Padding() []byte {
    return gaes.PKCS5Padding([]byte("hello"), 64)
}

// PKCS5UnPadding
func aesPKCS5UnPadding() {
    b := aesPKCS5Padding()

    byte_data, err := gaes.PKCS5UnPadding(b, 64)
    if err != nil {
        panic(err)
    }

    fmt.Println(byte_data)
    fmt.Printf("%s\n", byte_data)
}

// ZeroPadding
func aesZeroPadding()([]byte, int) {
    b, n := gaes.ZeroPadding([]byte("hello"), 10)
    return b, n
}

// ZeroUnPadding
func aesZeroUnPadding() {
    b, n := aesZeroPadding()
    data := gaes.ZeroUnPadding(b, n)
    fmt.Println(data)
    fmt.Printf("%s\n", data)
}

相关文章

网友评论

      本文标题:gf框架gaes使用

      本文链接:https://www.haomeiwen.com/subject/cvimactx.html