Documentation
¶
Index ¶
- Constants
- func GetIndexBlockLength(dbType string) int
- type DataBlock
- type DecryptedBlock
- func (d *DecryptedBlock) Encrypt(data []byte, key string) ([]byte, error)
- func (d *DecryptedBlock) GetClientId() int
- func (d *DecryptedBlock) GetExpirationDate() int
- func (d *DecryptedBlock) GetRandomSize() int
- func (d *DecryptedBlock) SetClientId(clientId int)
- func (d *DecryptedBlock) SetExpirationDate(expirationDate int)
- func (d *DecryptedBlock) SetRandomSize(randomSize int)
- func (d *DecryptedBlock) ToBytes() []byte
- func (d *DecryptedBlock) ToEncryptedBytes(key string) ([]byte, error)
- type HeaderBlock
- type HyperHeaderBlock
- func (h *HyperHeaderBlock) GetClientId() int64
- func (h *HyperHeaderBlock) GetDecryptedBlock() *DecryptedBlock
- func (h *HyperHeaderBlock) GetEncryptedBlockSize() int
- func (h *HyperHeaderBlock) GetEncryptedData() []byte
- func (h *HyperHeaderBlock) GetHeaderSize() int
- func (h *HyperHeaderBlock) GetVersion() int64
- func (h *HyperHeaderBlock) SetClientId(clientId int64)
- func (h *HyperHeaderBlock) SetDecryptedBlock(decryptedBlock *DecryptedBlock)
- func (h *HyperHeaderBlock) SetEncryptedBlockSize(encryptedBlockSize int)
- func (h *HyperHeaderBlock) SetEncryptedData(encryptedData []byte)
- func (h *HyperHeaderBlock) SetVersion(version int64)
- func (h *HyperHeaderBlock) ToBytes() []byte
- type IndexBlock
- func (ib *IndexBlock) GetBytes() []byte
- func (ib *IndexBlock) GetDataLen() int
- func (ib *IndexBlock) GetDataPtr() int
- func (ib *IndexBlock) GetEndIp() []byte
- func (ib *IndexBlock) GetStartIp() []byte
- func (ib *IndexBlock) SetDataLen(dataLen int) *IndexBlock
- func (ib *IndexBlock) SetDataPtr(dataPtr int) *IndexBlock
- func (ib *IndexBlock) SetEndIp(endIp []byte) *IndexBlock
- func (ib *IndexBlock) SetStartIp(startIp []byte) *IndexBlock
Constants ¶
const HEADER_LINE_SIZE = 20
HEADER_LINE_SIZE 定义了头行的大小。
const HeaderSize = 12
Variables ¶
This section is empty.
Functions ¶
Types ¶
type DataBlock ¶
type DataBlock struct {
// contains filtered or unexported fields
}
DataBlock 表示数据库中的一个数据块。 它包含一个区域和一个指向数据库文件中数据的指针。 DataBlock 对象的内存结构如下: +----------------+-----------+ | []byte | int | +----------------+-----------+ | region | dataPtr | +----------------+-----------+
func NewDataBlock ¶
NewDataBlock 创建一个新的 DataBlock,使用给定的 region 和 dataPtr。
func (*DataBlock) SetDataPtr ¶
SetDataPtr 将此数据块的数据指针设置为指定值。
type DecryptedBlock ¶
type DecryptedBlock struct {
// contains filtered or unexported fields
}
DecryptedBlock
- 表示加密前的解密数据块,包含客户端ID、过期日期和IP数据库的起始指针。
- 该结构体提供了将这些数据序列化为字节数组的功能,并使用AES加密。 *
- +----------------+----------------+----------------+----------------+
- | clientId | expirationDate | | |
- | (12 位) | (20 位) | | |
- +----------------+----------------+----------------+----------------+
- | randomSize (32 位) |
- +--------------------------------------------------------------------+
- | 保留 (64 位) |
- +--------------------------------------------------------------------+
func Decrypt ¶
func Decrypt(key string, encryptedBytes []byte) (*DecryptedBlock, error)
Decrypt 解密加密的字节并返回DecryptedBlock
func (*DecryptedBlock) Encrypt ¶
func (d *DecryptedBlock) Encrypt(data []byte, key string) ([]byte, error)
Encrypt 使用指定的密钥对提供的字节数组进行AES加密 密钥应为表示AES密钥的base64编码字符串
func (*DecryptedBlock) GetExpirationDate ¶
func (d *DecryptedBlock) GetExpirationDate() int
GetExpirationDate 获取过期日期
func (*DecryptedBlock) GetRandomSize ¶
func (d *DecryptedBlock) GetRandomSize() int
GetRandomSize 获取随机字节的大小 此方法返回加密过程中使用的随机字节的大小 随机字节的大小对于确保加密的唯一性和安全性至关重要
func (*DecryptedBlock) SetClientId ¶
func (d *DecryptedBlock) SetClientId(clientId int)
SetClientId 设置客户端ID
func (*DecryptedBlock) SetExpirationDate ¶
func (d *DecryptedBlock) SetExpirationDate(expirationDate int)
SetExpirationDate 设置过期日期
func (*DecryptedBlock) SetRandomSize ¶
func (d *DecryptedBlock) SetRandomSize(randomSize int)
SetRandomSize 设置随机字节的大小 此方法允许设置加密过程中要使用的随机字节的大小 调整随机字节的大小可能会影响加密的安全性和性能
func (*DecryptedBlock) ToBytes ¶
func (d *DecryptedBlock) ToBytes() []byte
ToBytes 将DecryptedBlock实例序列化为字节数组 数组结构如下:前4字节包含客户端ID和过期日期, 接下来的4字节包含随机大小,最后8字节保留并初始化为0
func (*DecryptedBlock) ToEncryptedBytes ¶
func (d *DecryptedBlock) ToEncryptedBytes(key string) ([]byte, error)
ToEncryptedBytes 将DecryptedBlock加密并返回加密后的字节
type HeaderBlock ¶
type HeaderBlock struct {
// contains filtered or unexported fields
}
HeaderBlock 表示数据库中的一个头块。 它包含一个索引起始IP地址和一个索引指针。 它还提供了一个方法来获取用于数据库存储的字节。
HeaderBlock实例的内存布局:
+-----------------+-----------------+ | indexStartIp | indexPtr | | (字节数组) | (int) | +-----------------+-----------------+
func NewHeaderBlock ¶
func NewHeaderBlock(indexStartIp []byte, indexPtr int) *HeaderBlock
NewHeaderBlock 使用指定的索引起始IP地址和索引指针构造一个新的HeaderBlock。
func (*HeaderBlock) GetBytes ¶
func (hb *HeaderBlock) GetBytes() []byte
GetBytes 返回用于数据库存储的字节。 返回的字节数组长度为20字节,前16字节为索引起始IP地址,后4字节为索引指针。
func (*HeaderBlock) GetIndexStartIp ¶
func (hb *HeaderBlock) GetIndexStartIp() []byte
GetIndexStartIp 返回此头块的索引起始IP地址。
func (*HeaderBlock) SetIndexPtr ¶
func (hb *HeaderBlock) SetIndexPtr(indexPtr int) *HeaderBlock
SetIndexPtr 将此头块的索引指针设置为指定值。
func (*HeaderBlock) SetIndexStartIp ¶
func (hb *HeaderBlock) SetIndexStartIp(indexStartIp []byte) *HeaderBlock
SetIndexStartIp 将此头块的索引起始IP地址设置为指定值。
type HyperHeaderBlock ¶
type HyperHeaderBlock struct {
Version int64
ClientId int64
EncryptedBlockSize int
EncryptedData []byte
DecryptedBlock *DecryptedBlock
}
func FromBytes ¶
func FromBytes(bytes []byte) *HyperHeaderBlock
FromBytes 从12字节长的字节数组反序列化HyperHeaderBlock实例。 此方法接受一个字节数组并从中构造一个HyperHeaderBlock实例。 字节数组的结构预期如下: - 前4个字节表示HyperHeaderBlock的版本。 - 接下来的4个字节表示客户端ID。 - 再接下来的4个字节表示加密数据的长度。
func (*HyperHeaderBlock) GetClientId ¶
func (h *HyperHeaderBlock) GetClientId() int64
GetClientId 获取HyperHeaderBlock的客户端ID。
func (*HyperHeaderBlock) GetDecryptedBlock ¶
func (h *HyperHeaderBlock) GetDecryptedBlock() *DecryptedBlock
GetDecryptedBlock 获取解密后的块。
func (*HyperHeaderBlock) GetEncryptedBlockSize ¶
func (h *HyperHeaderBlock) GetEncryptedBlockSize() int
GetEncryptedBlockSize 获取加密数据块的大小。
func (*HyperHeaderBlock) GetEncryptedData ¶
func (h *HyperHeaderBlock) GetEncryptedData() []byte
GetEncryptedData 获取加密数据。
func (*HyperHeaderBlock) GetHeaderSize ¶
func (h *HyperHeaderBlock) GetHeaderSize() int
GetHeaderSize 返回HyperHeaderBlock的总大小。 大小计算为以下各项之和: - 头部的大小(12字节) - 加密数据块的大小 - 随机字节的大小
func (*HyperHeaderBlock) GetVersion ¶
func (h *HyperHeaderBlock) GetVersion() int64
GetVersion 获取HyperHeaderBlock的版本。
func (*HyperHeaderBlock) SetClientId ¶
func (h *HyperHeaderBlock) SetClientId(clientId int64)
SetClientId 设置HyperHeaderBlock的客户端ID。
func (*HyperHeaderBlock) SetDecryptedBlock ¶
func (h *HyperHeaderBlock) SetDecryptedBlock(decryptedBlock *DecryptedBlock)
SetDecryptedBlock 设置解密后的块。
func (*HyperHeaderBlock) SetEncryptedBlockSize ¶
func (h *HyperHeaderBlock) SetEncryptedBlockSize(encryptedBlockSize int)
SetEncryptedBlockSize 设置加密数据块的大小。
func (*HyperHeaderBlock) SetEncryptedData ¶
func (h *HyperHeaderBlock) SetEncryptedData(encryptedData []byte)
SetEncryptedData 设置加密数据。
func (*HyperHeaderBlock) SetVersion ¶
func (h *HyperHeaderBlock) SetVersion(version int64)
SetVersion 设置HyperHeaderBlock的版本。
func (*HyperHeaderBlock) ToBytes ¶
func (h *HyperHeaderBlock) ToBytes() []byte
ToBytes 将HyperHeaderBlock实例转换为字节数组。 此方法将HyperHeaderBlock实例序列化为字节数组,可用于存储或传输。 字节数组的结构如下: - 前4个字节表示HyperHeaderBlock的版本。 - 接下来的4个字节表示客户端ID。 - 再接下来的4个字节表示加密数据的长度。
type IndexBlock ¶
type IndexBlock struct {
// contains filtered or unexported fields
}
IndexBlock 表示数据库中的索引块。 索引块包含起始IP、结束IP、数据指针和数据长度。 起始IP和结束IP用于确定数据块覆盖的IP地址范围。 数据指针用于定位数据库中的数据块。 数据长度用于从数据库中读取数据块。
func NewIndexBlock ¶
func NewIndexBlock(startIp, endIp []byte, dataPtr, dataLen int, dbType string) *IndexBlock
NewIndexBlock 是IndexBlock结构体的构造函数。 它使用提供的值初始化起始IP、结束IP、数据指针和数据长度。
参数:
startIp: 数据块覆盖范围的起始IP地址。 endIp: 数据块覆盖范围的结束IP地址。 dataPtr: 数据库中数据块的指针。 dataLen: 数据块的字节长度。 dbType: 数据库类型(IPv4或IPv6)。
func (*IndexBlock) GetBytes ¶
func (ib *IndexBlock) GetBytes() []byte
GetBytes 返回表示索引块的字节数组。 字节数组的结构如下: +------------+-----------+-----------+ | 4/16 bytes | 4/16bytes | 4bytes | 1bytes +------------+-----------+-----------+
起始IP 结束IP 数据指针 长度
返回值: 表示索引块的字节数组。
func (*IndexBlock) GetDataLen ¶
func (ib *IndexBlock) GetDataLen() int
func (*IndexBlock) GetDataPtr ¶
func (ib *IndexBlock) GetDataPtr() int
func (*IndexBlock) GetEndIp ¶
func (ib *IndexBlock) GetEndIp() []byte
func (*IndexBlock) GetStartIp ¶
func (ib *IndexBlock) GetStartIp() []byte
func (*IndexBlock) SetDataLen ¶
func (ib *IndexBlock) SetDataLen(dataLen int) *IndexBlock
func (*IndexBlock) SetDataPtr ¶
func (ib *IndexBlock) SetDataPtr(dataPtr int) *IndexBlock
func (*IndexBlock) SetEndIp ¶
func (ib *IndexBlock) SetEndIp(endIp []byte) *IndexBlock
func (*IndexBlock) SetStartIp ¶
func (ib *IndexBlock) SetStartIp(startIp []byte) *IndexBlock