当前位置: 首页> 教育> 大学 > 微信小程序源代码_制作网站的模板_足球积分排行榜最新_国内免费建站平台

微信小程序源代码_制作网站的模板_足球积分排行榜最新_国内免费建站平台

时间:2025/7/12 7:29:19来源:https://blog.csdn.net/qq_45490502/article/details/143288409 浏览次数:0次
微信小程序源代码_制作网站的模板_足球积分排行榜最新_国内免费建站平台
   这里为了使用方便,实现代码不作为一个函数而是作为一个包,这样在后面的代码中也可以进行复用。

包和导入

package encryptimport ("crypto/aes"        // 提供 AES 加密算法实现"crypto/cipher"     // 提供加密算法接口和模式(如 CFB)"crypto/rand"       // 提供生成随机数功能"encoding/base64"   // 提供 Base64 编码和解码"fmt"               // 格式化 I/O"io"                // 基本 I/O 接口
)

package encrypt: 定义该文件属于 encrypt 包。
各种导入用于提供不同功能,如 AES 算法、CFB 模式、Base64 编码等。

Encrypt 函数

// Encrypt 对明文进行AES-CFB加密
func Encrypt(plaintext []byte, key string) (string, error) {block, err := aes.NewCipher([]byte(key))if err != nil {return "", err}iv := make([]byte, aes.BlockSize)if _, err := io.ReadFull(rand.Reader, iv); err != nil {return "", err}stream := cipher.NewCFBEncrypter(block, iv)ciphertext := make([]byte, len(plaintext))stream.XORKeyStream(ciphertext, plaintext)// 合并 IV 和密文result := append(iv, ciphertext...)// 使用 Base64 编码返回return base64.StdEncoding.EncodeToString(result), nil
}
  • Encrypt 函数接收明文和用于 AES 加密的密钥。
  • aes.NewCipher([]byte(key)): 利用提供的密钥生成一个 AES 块密码。
  • iv(初始化向量)是 AES 块大小(16 字节)的随机数,确保同样的明文每次加密结果不同。
  • 使用 cipher.NewCFBEncrypter 创建 CFB 加密
  • stream.XORKeyStream(ciphertext, plaintext): 用流加密对明文进行加密,结果保存在 ciphertext 中。
  • 将 iv 和 ciphertext 合并为一个切片,然后使用 Base64 编码生成字符串

Decrypt 函数

// Decrypt 对密文进行AES-CFB解密
func Decrypt(ciphertextBase64 string, key string) ([]byte, error) {ciphertext, err := base64.StdEncoding.DecodeString(ciphertextBase64)if err != nil {return nil, err}block, err := aes.NewCipher([]byte(key))if err != nil {return nil, err}if len(ciphertext) < aes.BlockSize {return nil, fmt.Errorf("ciphertext too short")}iv := ciphertext[:aes.BlockSize]ciphertext = ciphertext[aes.BlockSize:]stream := cipher.NewCFBDecrypter(block, iv)plaintext := make([]byte, len(ciphertext))stream.XORKeyStream(plaintext, ciphertext)return plaintext, nil
}
  • Decrypt 函数接收 Base64 编码的密文和密钥。 将 Base64 密文解码成字节切片。 类似加密过程,生成 AES 块密码。
  • 验证密文长度,确保其大于 AES 块大小。 从解码后的密文中提取 iv,其余部分为实际密文。 使用cipher.NewCFBDecrypter 函数创建 CFB 解密流。 解密密文,得出明文。

注意事项

  • 使用 CFB 模式不需要明文填充。 密钥长度应为 16, 24 或 32 字节,以匹配 AES-128, AES-192 或AES-256。 随机 iv 很重要,每次加密都使用新的 iv 增强安全性。
关键字:微信小程序源代码_制作网站的模板_足球积分排行榜最新_国内免费建站平台

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: