Help us shape the future of Go! Take the 2026 Go Developer Survey

crypto

package module
v0.0.18 Latest Latest
Warning

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

Go to latest
Published: Oct 10, 2026 License: MIT Imports: 28 Imported by: 5

README

密码加解密

算法列表

算法名 特点 用途
Bcrypt 基于 Blowfish 算法,内置盐值,支持调整计算成本。 密码存储,防止暴力破解。
Argon2 内存硬性哈希算法,支持多种参数调整(内存、时间、并行度)。 码存储,适合高安全性需求。
PBKDF2 基于 HMAC 的密钥派生函数,支持多种哈希算法。 密码存储,兼容性好。
SHA-256/SHA-512 快速单向哈希算法,无内置盐值。 数据完整性校验,需手动添加盐值用于密码存储。
AES (Advanced Encryption Standard) 对称加密算法,支持 128/192/256 位密钥。 数据加密传输或存储。
SM4 国密分组对称加密算法,支持 128 位密钥。 国密数据加密传输或存储。
RSA 非对称加密算法,基于大整数分解难题。 数据加密、数字签名。
ECDSA/ECDH (椭圆曲线算法) 基于椭圆曲线的非对称加密,密钥更短但安全性高。 数据完整性和认证。
HMAC (Hash-based Message Authentication Code) 基于哈希算法的消息认证码。 数据完整性和认证。

RSA

  • NewRSACrypto(keySize int):生成 RSA 密钥对。
  • NewRSACryptoFromPrivateKeyPEM(privateKeyPEM string):从 PEM 私钥创建 RSA 加解密实例,兼容 PKCS#1 与 PKCS#8。
  • NewRSACryptoFromPublicKeyPEM(publicKeyPEM string):从 PEM 公钥创建 RSA 加密实例,兼容 PKIX 与 PKCS#1。
  • Encrypt(data string) / Decrypt(encryptedData string):使用 RSA-OAEP-SHA256 加解密字符串,密文使用 base64 编码。
  • EncryptBytes(data []byte) / DecryptBytes(encryptedData string):使用 RSA-OAEP-SHA256 加解密二进制数据,密文使用 base64 编码。
  • ExportPrivateKey():导出 PKCS#1 私钥 PEM。
  • ExportPrivateKeyPKCS8():导出 PKCS#8 私钥 PEM。
  • ExportPublicKey():导出 PKIX 公钥 PEM,PEM 块类型为 RSA PUBLIC KEY。
  • ExportPublicKeyPKIX():导出 PKIX 公钥 PEM,PEM 块类型为 PUBLIC KEY,适合浏览器 WebCrypto spki 导入。

AES

  • GenerateAESKey(length int):生成 16、24 或 32 字节 AES 密钥。
  • AesEncrypt(plainText, key, iv []byte) / AesDecrypt(cryptedText, key, iv []byte):使用 AES-CBC 加解密,保留用于兼容已有调用。
  • AesGCMEncrypt(plainText, key, nonce []byte) / AesGCMDecrypt(cipherText, key, nonce []byte):使用 AES-GCM 加解密,附加认证数据为空。
  • AesGCMEncryptWithAAD(plainText, key, nonce, additionalData []byte) / AesGCMDecryptWithAAD(cipherText, key, nonce, additionalData []byte):使用 AES-GCM 加解密并校验附加认证数据,推荐用于需要绑定可见元数据的防篡改场景。

OpenSSL 兼容文件加解密

  • NewOpenSSLFileCrypto():创建固定参数的 OpenSSL enc 兼容文件加解密器。
  • EncryptReader(password, source, target) / DecryptReader(password, source, target):使用 PBKDF2-HMAC-SHA256、AES-256-CBC 和 PKCS#7 填充处理流式文件;文件格式为 Salted__、8 字节盐值和密文,适合与 OpenSSL enc 互操作。

SM4

  • Sm4Encrypt(plainText, key, iv []byte) / Sm4Decrypt(cipherText, key, iv []byte):使用 SM4-CBC 和 PKCS#5 填充加解密。
  • Sm4GCMEncrypt(plainText, key, nonce []byte) / Sm4GCMDecrypt(cipherText, key, nonce []byte):使用 SM4-GCM 加解密。

Documentation

Index

Constants

View Source
const AESGCMNonceSize = 12

AESGCMNonceSize 是标准 AES-GCM 的 nonce 长度。

Variables

View Source
var DefaultAESKey = []byte("f51d66a73d8a0927")

DefaultAESKey 默认AES密钥(16字节)

Functions

func AesDecrypt

func AesDecrypt(cryptedText, key, iv []byte) ([]byte, error)

AesDecrypt AES解密

func AesEncrypt

func AesEncrypt(plainText, key, iv []byte) ([]byte, error)

AesEncrypt AES加密

func AesGCMDecrypt

func AesGCMDecrypt(cipherText, key, nonce []byte) ([]byte, error)

AesGCMDecrypt 使用 AES-GCM 解密密文。

func AesGCMDecryptWithAAD added in v0.0.14

func AesGCMDecryptWithAAD(cipherText, key, nonce, additionalData []byte) ([]byte, error)

AesGCMDecryptWithAAD 使用 AES-GCM 解密密文,并校验附加数据。

func AesGCMEncrypt

func AesGCMEncrypt(plainText, key, nonce []byte) ([]byte, error)

AesGCMEncrypt 使用 AES-GCM 加密明文。

func AesGCMEncryptWithAAD added in v0.0.14

func AesGCMEncryptWithAAD(plainText, key, nonce, additionalData []byte) ([]byte, error)

AesGCMEncryptWithAAD 使用 AES-GCM 加密明文,并认证附加数据。

func Encrypt

func Encrypt(plainPassword string) (string, error)

Encrypt 加密数据

func GenerateAESKey

func GenerateAESKey(length int) ([]byte, error)

GenerateAESKey 生成AES密钥

func PKCS5Padding

func PKCS5Padding(plaintext []byte, blockSize int) []byte

PKCS5Padding 填充明文

func PKCS5UnPadding

func PKCS5UnPadding(origData []byte) []byte

PKCS5UnPadding 去除填充数据

func ParseRSAPrivateKeyPEM

func ParseRSAPrivateKeyPEM(privateKeyPEM string) (*rsa.PrivateKey, error)

ParseRSAPrivateKeyPEM 从 PEM 字符串解析 RSA 私钥,兼容 PKCS#1 与 PKCS#8。

func ParseRSAPublicKeyPEM

func ParseRSAPublicKeyPEM(publicKeyPEM string) (*rsa.PublicKey, error)

ParseRSAPublicKeyPEM 从 PEM 字符串解析 RSA 公钥,兼容 PKIX 与 PKCS#1。

func Sm4Decrypt added in v0.0.14

func Sm4Decrypt(cipherText, key, iv []byte) ([]byte, error)

Sm4Decrypt 使用 SM4-CBC 解密并校验 PKCS#5 填充。

func Sm4Encrypt added in v0.0.14

func Sm4Encrypt(plainText, key, iv []byte) ([]byte, error)

Sm4Encrypt 使用 SM4-CBC 加密明文,返回带 PKCS#5 填充的密文。

func Sm4GCMDecrypt added in v0.0.14

func Sm4GCMDecrypt(cipherText, key, nonce []byte) ([]byte, error)

Sm4GCMDecrypt 使用 SM4-GCM 解密并校验密文完整性。

func Sm4GCMEncrypt added in v0.0.14

func Sm4GCMEncrypt(plainText, key, nonce []byte) ([]byte, error)

Sm4GCMEncrypt 使用 SM4-GCM 加密明文,返回 ciphertext||tag。

func Verify

func Verify(plainPassword, encrypted string) error

Verify 验证加密数据

Types

type Argon2Crypto

type Argon2Crypto struct {
	// 参数可配置,默认使用推荐值
	Memory      uint32
	Iterations  uint32
	Parallelism uint8
	SaltLength  uint32
	KeyLength   uint32
}

Argon2Crypto 实现 Argon2id 密码哈希算法

func NewArgon2Crypto

func NewArgon2Crypto() *Argon2Crypto

NewArgon2Crypto 创建带默认参数的 Argon2 加密器

func (*Argon2Crypto) Encrypt

func (a *Argon2Crypto) Encrypt(password string) (string, error)

Encrypt 实现密码加密

func (*Argon2Crypto) Verify

func (a *Argon2Crypto) Verify(password, encrypted string) error

Verify 验证密码

type BCryptCrypto

type BCryptCrypto struct{}

func NewBCryptCrypto

func NewBCryptCrypto() *BCryptCrypto

NewBCryptCrypto 创建 bcrypt 加密器。

func (*BCryptCrypto) Encrypt

func (b *BCryptCrypto) Encrypt(password string) (encrypted string, err error)

Encrypt 使用 bcrypt 加密密码,返回加密后的字符串和空盐值

func (*BCryptCrypto) Verify

func (b *BCryptCrypto) Verify(password, encrypted string) error

Verify 验证密码是否匹配加密后的字符串

type Crypto

type Crypto interface {
	// Encrypt 加密密码,返回加密后的字符串(包含算法标识和盐值)
	Encrypt(plainPassword string) (encrypted string, err error)

	// Verify 验证密码是否匹配
	Verify(plainPassword, encrypted string) error
}

Crypto 密码加解密接口

func NewCrypto

func NewCrypto(algorithm string) (Crypto, error)

NewCrypto 根据算法名称创建对应的加密器。

type ECDHCrypto

type ECDHCrypto struct {
	// contains filtered or unexported fields
}

ECDHCrypto 实现基于 ECDH 的密钥交换

func NewECDHCrypto

func NewECDHCrypto() (*ECDHCrypto, error)

NewECDHCrypto 创建一个新的 ECDHCrypto 实例

func (*ECDHCrypto) DeriveSharedSecret

func (e *ECDHCrypto) DeriveSharedSecret(publicKey string) ([]byte, error)

DeriveSharedSecret 根据对方公钥派生共享密钥。

func (*ECDHCrypto) Encrypt

func (e *ECDHCrypto) Encrypt(plainPassword string) (string, error)

Encrypt 返回公钥作为加密结果

func (*ECDHCrypto) Verify

func (e *ECDHCrypto) Verify(plainPassword, encrypted string) error

Verify 验证共享密钥是否一致

type ECDSACrypto

type ECDSACrypto struct {
	// contains filtered or unexported fields
}

ECDSACrypto 实现基于 ECDSA 的加密和验证

func NewECDSACrypto

func NewECDSACrypto() (*ECDSACrypto, error)

NewECDSACrypto 创建一个新的 ECDSACrypto 实例

func (*ECDSACrypto) Encrypt

func (e *ECDSACrypto) Encrypt(plainPassword string) (string, error)

Encrypt 使用 ECDSA 对消息进行签名

func (*ECDSACrypto) Verify

func (e *ECDSACrypto) Verify(plainPassword, encrypted string) error

Verify 验证消息的签名是否有效

type HMACCrypto

type HMACCrypto struct {
	// contains filtered or unexported fields
}

HMACCrypto 实现基于 HMAC 的加密和验证

func NewHMACCrypto

func NewHMACCrypto(secretKey string) *HMACCrypto

NewHMACCrypto 创建一个新的 HMACCrypto 实例

func (*HMACCrypto) Encrypt

func (h *HMACCrypto) Encrypt(data string) (string, error)

Encrypt 使用 HMAC-SHA256 对数据进行加密

func (*HMACCrypto) Verify

func (h *HMACCrypto) Verify(data, encrypted string) error

Verify 验证数据的 HMAC 值是否匹配

type OpenSSLFileCrypto added in v0.0.15

type OpenSSLFileCrypto struct {
	// contains filtered or unexported fields
}

OpenSSLFileCrypto 实现与 OpenSSL enc 兼容的 AES-256-CBC 文件加解密。

func NewOpenSSLFileCrypto added in v0.0.15

func NewOpenSSLFileCrypto() *OpenSSLFileCrypto

NewOpenSSLFileCrypto 创建固定参数的 OpenSSL 兼容文件加解密器。

func (*OpenSSLFileCrypto) DecryptReader added in v0.0.15

func (c *OpenSSLFileCrypto) DecryptReader(password string, source io.Reader, target io.Writer) error

DecryptReader 使用 OpenSSL enc 兼容格式解密输入流。

func (*OpenSSLFileCrypto) EncryptReader added in v0.0.15

func (c *OpenSSLFileCrypto) EncryptReader(password string, source io.Reader, target io.Writer) error

EncryptReader 使用 OpenSSL enc 兼容格式加密输入流。

type PBKDF2Crypto

type PBKDF2Crypto struct {
	// 可配置参数,默认使用推荐值
	Iterations int
	KeyLength  int
	Hash       func() hash.Hash
	HashName   string
}

PBKDF2Crypto 实现 PBKDF2-HMAC 密码哈希算法

func NewPBKDF2Crypto

func NewPBKDF2Crypto() *PBKDF2Crypto

NewPBKDF2Crypto 创建带默认参数的 PBKDF2 加密器 (SHA256)

func NewPBKDF2WithSHA512

func NewPBKDF2WithSHA512() *PBKDF2Crypto

NewPBKDF2WithSHA512 创建使用 SHA512 的 PBKDF2 加密器

func (*PBKDF2Crypto) Encrypt

func (p *PBKDF2Crypto) Encrypt(password string) (string, error)

Encrypt 实现密码加密

func (*PBKDF2Crypto) Verify

func (p *PBKDF2Crypto) Verify(password, encrypted string) error

Verify 验证密码

type RSACrypto

type RSACrypto struct {
	// contains filtered or unexported fields
}

RSACrypto 实现 RSA 加密和解密

func NewRSACrypto

func NewRSACrypto(keySize int) (*RSACrypto, error)

NewRSACrypto 创建一个新的 RSACrypto 实例

func NewRSACryptoFromPrivateKeyPEM

func NewRSACryptoFromPrivateKeyPEM(privateKeyPEM string) (*RSACrypto, error)

NewRSACryptoFromPrivateKeyPEM 根据 PEM 私钥创建 RSACrypto 实例。

func NewRSACryptoFromPublicKeyPEM

func NewRSACryptoFromPublicKeyPEM(publicKeyPEM string) (*RSACrypto, error)

NewRSACryptoFromPublicKeyPEM 根据 PEM 公钥创建 RSACrypto 实例。

func (*RSACrypto) Decrypt

func (r *RSACrypto) Decrypt(encryptedData string) (string, error)

Decrypt 使用私钥解密数据

func (*RSACrypto) DecryptBytes

func (r *RSACrypto) DecryptBytes(encryptedData string) ([]byte, error)

DecryptBytes 使用私钥解密 base64 密文,并返回原始二进制数据。

func (*RSACrypto) Encrypt

func (r *RSACrypto) Encrypt(data string) (string, error)

Encrypt 使用公钥加密数据

func (*RSACrypto) EncryptBytes

func (r *RSACrypto) EncryptBytes(data []byte) (string, error)

EncryptBytes 使用公钥加密二进制数据,并返回 base64 密文。

func (*RSACrypto) ExportPrivateKey

func (r *RSACrypto) ExportPrivateKey() (string, error)

ExportPrivateKey 导出私钥为 PEM 格式

func (*RSACrypto) ExportPrivateKeyPKCS8

func (r *RSACrypto) ExportPrivateKeyPKCS8() (string, error)

ExportPrivateKeyPKCS8 导出 PKCS#8 私钥为 PEM 格式。

func (*RSACrypto) ExportPublicKey

func (r *RSACrypto) ExportPublicKey() (string, error)

ExportPublicKey 导出公钥为 PEM 格式

func (*RSACrypto) ExportPublicKeyPKIX

func (r *RSACrypto) ExportPublicKeyPKIX() (string, error)

ExportPublicKeyPKIX 导出 PKIX 公钥为 PEM 格式。

type SHACrypto

type SHACrypto struct {
	Hash       func() hash.Hash
	HashName   string
	SaltLength int
}

SHACrypto 实现 SHA-256/SHA-512 密码哈希算法(带盐值)

func NewSHA256Crypto

func NewSHA256Crypto() *SHACrypto

NewSHA256Crypto 创建 SHA-256 加密器

func NewSHA512Crypto

func NewSHA512Crypto() *SHACrypto

NewSHA512Crypto 创建 SHA-512 加密器

func (*SHACrypto) Encrypt

func (s *SHACrypto) Encrypt(password string) (string, error)

Encrypt 实现密码加密(带盐值)

func (*SHACrypto) Verify

func (s *SHACrypto) Verify(password, encrypted string) error

Verify 验证密码

Jump to

Keyboard shortcuts

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