crypto

package
v0.3.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 15, 2026 License: MIT Imports: 11 Imported by: 0

README

Crypto (加密)

提供常用加解密算法的封装。

接口定义

type Crypto interface {
    Encrypt(data []byte, key []byte) ([]byte, error)
    Decrypt(data []byte, key []byte) ([]byte, error)
}

支持的算法

AES (AES-GCM)

使用 AES-GCM 模式进行对称加密。

  • NewAESCrypto
    • 签名: func NewAESCrypto() Crypto
    • 描述: 创建 AES 加密器。
    • 密钥要求: 16, 24, 或 32 字节。
    • 输出格式: Nonce + Ciphertext。
RSA (RSA-OAEP)

使用 RSA-OAEP (SHA256) 进行非对称加密。

  • NewRSACrypto
    • 签名: func NewRSACrypto() Crypto
    • 描述: 创建 RSA 加密器。
    • 密钥要求: PEM 格式的公钥/私钥字节数据。
MD5

提供 MD5 哈希计算(注意:MD5 不实现 Crypto 接口)。

  • NewMD5
    • 签名: func NewMD5() *MD5
  • Encrypt
    • 签名: func (m *MD5) Encrypt(input, key string) string
    • 描述: 计算 key + input 的 MD5 值,返回 hex 字符串。
  • Compare
    • 签名: func (m *MD5) Compare(input, salt, hash string) bool
    • 描述: 验证哈希匹配。

示例

import "github.com/fireflycore/go-utils/crypto"

func main() {
    // AES 示例
    aes := crypto.NewAESCrypto()
    key := []byte("1234567890123456") // 16 bytes
    data := []byte("secret")
    encrypted, _ := aes.Encrypt(data, key)
    decrypted, _ := aes.Decrypt(encrypted, key)
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AES

type AES struct{}

AES 实现了 Crypto 接口,提供基于 AES-GCM 模式的加解密功能 使用 Galois/Counter Mode (GCM) 提供认证加密

func (*AES) Decrypt

func (a *AES) Decrypt(data []byte, key []byte) ([]byte, error)

Decrypt 使用 AES-GCM 算法解密数据 data: 密文数据,格式必须为 [nonce + ciphertext] key: 解密密钥,必须与加密时使用的密钥一致

func (*AES) Encrypt

func (a *AES) Encrypt(data []byte, key []byte) ([]byte, error)

Encrypt 使用 AES-GCM 算法加密数据 data: 待加密的明文 key: AES 密钥,长度必须为 16, 24 或 32 字节(对应 AES-128, AES-192, AES-256) 返回格式: [nonce(随机值) + ciphertext(密文)]

type Crypto

type Crypto interface {
	// Encrypt 加密数据
	// data: 原始数据
	// key: 加密密钥
	// 返回加密后的数据,若出错返回 error
	Encrypt(data []byte, key []byte) ([]byte, error)

	// Decrypt 解密数据
	// data: 密文数据
	// key: 解密密钥
	// 返回解密后的原始数据,若出错返回 error
	Decrypt(data []byte, key []byte) ([]byte, error)
}

Crypto 定义通用加解密接口 注意:不同的实现可能对 data 和 key 有不同的长度或格式要求

func NewAESCrypto

func NewAESCrypto() Crypto

NewAESCrypto 创建一个新的 AES 加密器实例

func NewRSACrypto

func NewRSACrypto() Crypto

NewRSACrypto 创建一个新的 RSA 加密器实例。

type MD5

type MD5 struct{}

MD5 提供 MD5 哈希计算功能 注意:MD5 已被认为不再安全,仅建议用于非安全敏感场景(如文件完整性校验、简单的指纹生成) 该结构体未实现 Crypto 接口,因为其 Encrypt 方法签名不同

func NewMD5

func NewMD5() *MD5

NewMD5 创建一个新的 MD5 工具实例

func (*MD5) Compare

func (m *MD5) Compare(input, salt, hash string) bool

Compare 比较输入字符串的哈希值是否与给定哈希匹配 input: 待验证的原始字符串 salt: 计算哈希时使用的盐值 hash: 预期的 MD5 哈希值(十六进制字符串)

func (*MD5) Encrypt

func (m *MD5) Encrypt(input, key string) string

Encrypt 计算字符串的 MD5 哈希值 input: 待哈希的字符串 key: 可选的盐值(salt),如果非空,将在 input 之前写入哈希计算器 返回: 32位十六进制字符串

type RSA

type RSA struct{}

RSA 实现 Crypto 接口,提供基于 RSA-OAEP(SHA256) 的加解密能力。

func (*RSA) Decrypt

func (r *RSA) Decrypt(data []byte, key []byte) ([]byte, error)

Decrypt 使用 RSA 私钥解密数据 data: 密文数据 key: PEM 格式的 RSA 私钥数据 使用 SHA256 作为 OAEP 的哈希函数

func (*RSA) Encrypt

func (r *RSA) Encrypt(data []byte, key []byte) ([]byte, error)

Encrypt 使用 RSA 公钥加密数据

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL