-
Notifications
You must be signed in to change notification settings - Fork 0
/
crypto.go
34 lines (30 loc) · 1.63 KB
/
crypto.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package crypto
// Crypto 加密工厂
type Crypto struct {
Symmetric SymmetricCrypto // 对称加密
Asymmetric AsymmetricCrypto // 非对称加密
Digest MessageDigest // 信息摘要
}
// SymmetricCrypto 对称加密接口
type SymmetricCrypto interface {
Encrypt(data []byte, key []byte) ([]byte, error) // 加密
Decrypt(data []byte, key []byte) ([]byte, error) // 解密
EncryptWithBase64(data []byte, key []byte) (string, error) // 加密,使用base64
DecryptWithBase64(data string, key []byte) ([]byte, error) // 解密,使用base64
}
// AsymmetricCrypto 非对称加密接口
type AsymmetricCrypto interface {
GenerateKey() ([]byte, []byte, error) // 生成密钥对,返回私钥、公钥、错误
Encrypt(data []byte, key []byte) ([]byte, error) // 加密(公钥)
Decrypt(data []byte, key []byte) ([]byte, error) // 解密(私钥)
EncryptWithBase64(data []byte, key []byte) (string, error) // 加密(公钥),使用base64
DecryptWithBase64(data string, key []byte) ([]byte, error) // 解密(私钥),使用base64
Sign(data []byte, key []byte) ([]byte, error) // 签名(私钥)
Verify(data []byte, key []byte, sign []byte) (bool, error) // 校验(公钥)
SignWithBase64(data []byte, key []byte) (string, error) // 签名(私钥),使用base64
VerifyWithBase64(data []byte, key []byte, sign string) (bool, error) // 校验(公钥),使用base64
}
// MessageDigest 信息摘要
type MessageDigest interface {
Sum(data []byte) (string, error) // 摘要
}