当前位置: 首页 > article >正文

skynet.crypt 使用详解

在这里插入图片描述

目录

  • 1. hashkey
  • 2. randomkey
  • 3. desencode / desdecode
  • 4. hexencode (ltohex) / hexdecode (lfromhex)
  • 5. hmac64 / hmac64_md5
  • 6. dhexchange / dhsecret
  • 7. base64encode / base64decode
  • 8. sha1 / hmac_sha1
  • 9. hmac_hash
  • 10. xor_str
  • 11. padding
  • 注意事项

以下是 skynet.crypt 模块的详细使用说明,包含方法功能、示例及注意事项:


1. hashkey

功能: 生成字符串的哈希值(可能用于快速校验或唯一标识)。
示例:

local hash = crypt.hashkey("hello")
print(hash)  -- 输出类似 "a3f4c2" 的哈希字符串

2. randomkey

功能: 生成随机二进制字符串(常用于密钥/盐值)。
示例:

local key = crypt.randomkey()  -- 默认长度可能为16字节
local short_key = crypt.randomkey(8)  -- 生成8字节随机字符串

3. desencode / desdecode

功能: DES 对称加密与解密。
参数:

  • key: 8字节密钥(DES要求)
  • text: 明文/密文
  • padding: 是否填充(默认true)

示例:

local key = "12345678"
local text = "secret"
local encrypted = crypt.desencode(key, text)
local decrypted = crypt.desdecode(key, encrypted)
assert(decrypted == text)

4. hexencode (ltohex) / hexdecode (lfromhex)

功能: 十六进制与二进制字符串互转。
示例:

local hex = crypt.hexencode("abc")  -- 输出 "616263"
local bin = crypt.hexdecode("616263")  -- 返回 "abc"

5. hmac64 / hmac64_md5

功能: HMAC 算法(64位摘要或MD5变种)。
参数:

  • key: 密钥
  • text: 待签名字符串

示例:

local sig = crypt.hmac64("key", "data")
local sig_md5 = crypt.hmac64_md5("key", "data")

6. dhexchange / dhsecret

功能: Diffie-Hellman 密钥交换。

  • dhexchange: 生成公钥(需生成器g和模数p)。
  • dhsecret: 用本地私钥和对方公钥生成共享密钥。

示例:

local g = 5
local p = "0xFFFFFFFF"
local priv_key = crypt.randomkey()
local pub_key = crypt.dhexchange(priv_key, g, p)
local shared_secret = crypt.dhsecret(priv_key, other_pub_key, g, p)

7. base64encode / base64decode

功能: Base64 编解码。
示例:

local encoded = crypt.base64encode("data")  -- "ZGF0YQ=="
local decoded = crypt.base64decode(encoded)  -- "data"

8. sha1 / hmac_sha1

功能: SHA1 哈希及 HMAC-SHA1 签名。
示例:

local hash = crypt.sha1("hello")  -- 20字节二进制字符串
local hmac = crypt.hmac_sha1("key", "data")

9. hmac_hash

功能: 可能返回十六进制格式的HMAC(需结合哈希算法)。
示例:

local hmac_hex = crypt.hmac_hash("SHA256", "key", "data")

10. xor_str

功能: 按位异或两个等长字符串。
示例:

local result = crypt.xor_str("abc", "xyz")  -- 输出二进制字符串

11. padding

注意: 当前为空实现,可能用于填充算法占位。


注意事项

  1. 密钥长度: DES需8字节密钥,AES等其他算法需对应长度。
  2. 编码处理: 加密结果通常为二进制字符串,需用hexencodebase64encode传输。
  3. 算法安全: MD5/SHA1已不推荐用于高安全场景,建议使用SHA256等更强算法。
  4. 随机性: randomkey应确保密码学安全随机数生成。
  5. 填充模式: DES默认PKCS#5/PKCS#7填充,需与解密端一致。
  6. 类型错误: 参数非字符串或长度不符可能引发异常。

示例综合应用(HMAC + Base64):

local key = crypt.randomkey(16)
local data = "message"
local hmac = crypt.hmac_sha1(key, data)
local hmac_b64 = crypt.base64encode(hmac)
print("HMAC(Base64):", hmac_b64)

http://www.kler.cn/a/612906.html

相关文章:

  • vllm+openwebui,玩转私有化AI
  • 蓝桥与力扣刷题(蓝桥 最少刷题数)
  • python力扣73.矩阵置零
  • 卷积神经网络输入通道和输出通道的确定
  • JVM 面经
  • 【vLLM 学习】快速入门
  • Windows .gitignore文件不生效的情况排查
  • 板端ros2 VM ubuntu 虚拟机之间通信
  • Java 基本数据类型 vs 包装类(引用数据类型)
  • flink 分组窗口聚合 与 窗口表值函数聚合 的区别
  • 基于飞腾FT2000+服务器主板与DeepSeek大模型的国产化AI算力探索
  • 典范硬币系统(Canonical Coin System)→ 贪心算法
  • React19源码系列之Hooks(useRef)
  • 基于DrissionPage的TB商品信息采集与可视化分析
  • 深度解析Spring Boot可执行JAR的构建与启动机制
  • ubuntu22.04 ROS2humble 路径文件
  • 蓝耘平台API深度剖析:如何高效实现AI应用联动
  • 【剪辑_BGM 整合】
  • C++设计模式-备忘录模式:从基本介绍,内部原理、应用场景、使用方法,常见问题和解决方案进行深度解析
  • AI知识补全(六):RLHF 人类反馈强化学习是什么?