49 lines
1.3 KiB
Go
49 lines
1.3 KiB
Go
package crypto
|
||
|
||
import "time"
|
||
|
||
// Encryptor 加密器接口
|
||
type Encryptor interface {
|
||
// Encrypt 加密数据
|
||
Encrypt(plaintext []byte) ([]byte, error)
|
||
|
||
// Decrypt 解密数据
|
||
Decrypt(ciphertext []byte) ([]byte, error)
|
||
|
||
// Name 返回加密算法名称
|
||
Name() string
|
||
}
|
||
|
||
// Signer 签名器接口
|
||
type Signer interface {
|
||
// Sign 生成签名
|
||
Sign(data []byte) ([]byte, error)
|
||
|
||
// Verify 验证签名
|
||
Verify(data, signature []byte) error
|
||
}
|
||
|
||
type Config struct {
|
||
SecretKey string // 对称加密密钥
|
||
SignKey string // 签名密钥
|
||
TimestampWindow time.Duration // 时间戳允许的时间窗口
|
||
EnableTimestamp bool // 是否启用时间戳验证
|
||
EnableSignature bool // 是否启用签名
|
||
}
|
||
|
||
type EncryptedRequest struct {
|
||
Data string `json:"data"` // 加密后的数据(Base64)
|
||
Signature string `json:"signature"` // 签名(Base64)
|
||
Timestamp int64 `json:"timestamp"` // 时间戳
|
||
RequestID string `json:"request_id"` // 请求ID
|
||
Algorithm string `json:"algorithm"` // 加密算法
|
||
}
|
||
|
||
// EncryptedResponse 加密响应体
|
||
type EncryptedResponse struct {
|
||
Data string `json:"data"`
|
||
Signature string `json:"signature"`
|
||
Timestamp int64 `json:"timestamp"`
|
||
RequestID string `json:"request_id"`
|
||
}
|