zoukankan      html  css  js  c++  java
  • Golang 里的 AES、DES、3DES 加解密,支持 ECB、CBC 等多种模式组合

    Openssl encryption:OpenSSL库的功能包装,用于对称和非对称加密和解密。

    • AES-ECB
    • AES-CBC
    • DES-ECB
    • DES-CBC
    • 3DES-ECB
    • 3DES-CBC

    安装

    go get -u github.com/thinkoner/openssl
    

    用法

    AES

    密钥的长度可以是16/24/32个字符(128/192/256位)。

    AES-ECB:

    src := []byte("123456")
    key := []byte("1234567890123456")
    dst , _ := openssl.AesECBEncrypt(src, key, openssl.PKCS7_PADDING)
    fmt.Printf(base64.StdEncoding.EncodeToString(dst))  // yXVUkR45PFz0UfpbDB8/ew==
    
    dst , _ = openssl.AesECBDecrypt(dst, key, openssl.PKCS7_PADDING)
    fmt.Println(string(dst)) // 123456
    

    AES-CBC:

    src := []byte("123456")
    key := []byte("1234567890123456")
    iv := []byte("1234567890123456")
    dst , _ := openssl.AesCBCEncrypt(src, key, iv, openssl.PKCS7_PADDING)
    fmt.Println(base64.StdEncoding.EncodeToString(dst)) // 1jdzWuniG6UMtoa3T6uNLA==
    
    dst , _ = openssl.AesCBCDecrypt(dst, key, iv, openssl.PKCS7_PADDING)
    fmt.Println(string(dst)) // 123456
    

    DES

    密钥的长度必须为8个字符(64位)。

    DES-ECB:

    openssl.DesECBEncrypt(src, key, openssl.PKCS7_PADDING)
    openssl.DesECBDecrypt(src, key, openssl.PKCS7_PADDING)
    

    DES-CBC:

    openssl.DesCBCEncrypt(src, key, iv, openssl.PKCS7_PADDING)
    openssl.DesCBCDecrypt(src, key, iv, openssl.PKCS7_PADDING)
    

    3DES

    密钥的长度必须为24个字符(192位)。

    3DES-ECB:

    openssl.Des3ECBEncrypt(src, key, openssl.PKCS7_PADDING)
    openssl.Des3ECBDecrypt(src, key, openssl.PKCS7_PADDING)
    

    3DES-CBC:

    openssl.Des3CBCEncrypt(src, key, iv, openssl.PKCS7_PADDING)
    openssl.Des3CBCDecrypt(src, key, iv, openssl.PKCS7_PADDING)
    
  • 相关阅读:
    C# 中的委托和事件
    POJ题目分类
    A*算法
    Poj 1077 eight(BFS+全序列Hash解八数码问题)
    Poj 2304 Combination Lock(模拟顺、逆时钟开组合锁)
    Poj 2247 Humble Numbers(求只能被2,3,5, 7 整除的数)
    Poj 2328 Guessing Game(猜数字游戏)
    Poj 2403 Hay Points(Map)
    Poj 1338 Ugly Numbers(数学推导)
    Poj 1504 Adding Reversed Numbers(用字符串反转数字)
  • 原文地址:https://www.cnblogs.com/techone/p/11771928.html
Copyright © 2011-2022 走看看