关于 cs-crypto
cs-crypto 是一项面向代码和命令行加密实践的技能,涵盖加密、哈希、密钥管理、证书、TLS、签名、零知识证明及抗量子算法。
主要功能
- 01对称与非对称加密
- 02SHA-256 和 Blake3 哈希
- 03X.509 证书与 TLS
- 04数字签名与验证
- 05基础零知识证明
- 06抗量子算法
适用场景
- 01加密存储数据或 API 载荷
- 02检查数据完整性与真实性
- 03配置安全连接的 TLS
- 04探索隐私保护证明
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill cs-crypto安装后在 Claude Code 中输入/cs-crypto确认已加载。
详细介绍
cs-crypto
用途
此技能使 AI 能够实现和使用加密技术来保障数据安全,包括加密、哈希、密钥管理以及 TLS 等协议,确保在代码或命令行环境中安全运行。
适用场景
- 保护数据传输或存储安全,例如加密文件或消息。
- 验证数据完整性或真实性,例如对用户输入进行哈希处理或为交易签名。
- 处理安全通信,例如为 API 配置 TLS。
- 实现高级安全功能,例如用于保护隐私计算的零知识证明(ZKP),或用于面向未来的抗量子算法。
主要能力
- 对称加密:支持 CBC 或 GCM 模式下的 AES-128/256,可快速、安全地加密数据。
- 非对称加密:使用 RSA(最高 4096 位)或 ECC(例如 secp256k1)进行密钥交换和签名。
- 哈希:使用 SHA-256 生成标准摘要,或使用 Blake3 进行高速哈希并生成 256 位输出。
- PKI:生成和管理 X.509 证书,包括 CSR 的创建和验证。
- TLS:配置 TLS 1.3 握手以保护套接字安全,包括选择密码套件。
- 数字签名:使用 RSA 或 ECC(例如 ECDSA)创建和验证签名。
- ZKP:实现 zk-SNARK 等基础功能,在不泄露数据的情况下提供证明。
- 抗量子:使用 CRYSTALS-Kyber 等算法进行密钥封装,或使用 Dilithium 进行签名。
使用模式
始终使用安全的随机密钥初始化加密操作,并处理无效输入导致的异常。对于 AES 加密,先生成密钥,然后通过一次函数调用完成加密或解密。如果可用,请使用硬件安全模块(HSM)存储密钥。哈希处理模式:输入数据 -> 哈希对象 -> 更新并完成计算。对于 TLS,使用 SSL 上下文包装套接字。Python 示例模式:
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
key = b'32-byte-key-for-aes-256' # Use secure key generation
iv = os.urandom(16)
cipher = Cipher(algorithms.AES(key), modes.CBC(iv))
encryptor = cipher.encryptor()
encrypted = encryptor.update(b"plaintext") + encryptor.finalize()
对于命令行,将输入通过管道传递给带有特定标志的 OpenSSL 命令。
常用命令/API
- 使用 OpenSSL 进行 AES 加密:
openssl enc -aes-256-cbc -pbkdf2 -iter 10000 -in input.file -out output.enc -k $ENCRYPT_KEY(使用 -salt 增强安全性)。 - 生成 RSA 密钥:
openssl genpkey -algorithm RSA -out private.pem -pkeyopt rsa_keygen_bits:2048,然后使用openssl rsa -in private.pem -pubout -out public.pem导出公钥。 - 使用 SHA-256 进行哈希:
echo -n "data_to_hash" | openssl dgst -sha256 -binary | base64,或在 Python 中使用:import hashlib; hash_obj = hashlib.sha256(b"data").digest()。 - 创建 X.509 证书:
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -subj "/CN=example.com"。 - 在代码中配置 TLS:使用 Python 的 ssl 模块:
import ssl; context = ssl.create_default_context(); context.load_cert_chain(certfile="cert.pem", keyfile="key.pem")。 - 数字签名:使用
openssl dgst -sha256 -sign private.pem -out signature.bin input.file签名,并使用openssl dgst -sha256 -verify public.pem -signature signature.bin input.file验证。 - ZKP 示例:使用 libzkp 库;在代码中:
from libzkp import prove; proof = prove(statement, witness)。 - 抗量子操作:使用 OpenQuantumSafe 生成 Kyber 密钥:
oqsprov genpkey -algorithm Kyber512 -out key.pem。
集成说明
首先安装所需的库,例如 pip install cryptography openssl,或使用系统 OpenSSL。对于云 KMS 等经过身份验证的服务,请设置环境变量:export AWS_KMS_KEY=$SERVICE_API_KEY,并在代码中引用,例如 os.environ.get('AWS_KMS_KEY')。通过安全保管库管理密钥;切勿记录密钥。要集成多个工具,可将 OpenSSL 封装在脚本中:导入 subprocess 并运行 subprocess.run(['openssl', 'enc', ...])。确保与 Python 或 Go 等语言兼容;对于 Go,请使用 crypto/aes 包。
错误处理
始终将加密调用放在 try-except 块中,以捕获特定异常。例如,在 Python 中:from cryptography.exceptions import InvalidSignature; try: verifier.verify(signature, data) except InvalidSignature: raise ValueError("Signature invalid")。对于命令行工具,请检查退出代码:如果 openssl 命令失败,请解析 stderr 中的错误信息,例如 "bad decrypt",并使用正确的密钥重试。常见问题包括:密钥无效(使用 openssl errstr 查看错误代码)、哈希不匹配(重新计算并比较)或 TLS 握手失败(使用 -debug 标志进行调试)。记录错误及上下文,例如密钥长度或模式错误;必要时回退到其他算法。
具体使用示例
-
使用 AES-256-GCM 加密敏感字符串并将其解密: 在 Python 中:
from cryptography.hazmat.primitives.ciphers.aead import AESGCM key = b'32-byte-long-secret-key-here' aesgcm = AESGCM(key) nonce = os.urandom(12) encrypted = aesgcm.encrypt(nonce, b"confidential data", None) decrypted = aesgcm.decrypt(nonce, encrypted, None) # Output: b"confidential data"可将其用于保护 API 负载;将 nonce 与加密数据一同存储。
-
生成 RSA 密钥对、为消息签名并验证签名: 通过命令行:首先,生成密钥:
openssl genrsa -out private.pem 2048。签名:openssl dgst -sha256 -sign private.pem -out sig.bin message.txt。验证:openssl dgst -sha256 -verify public.pem -signature sig.bin message.txt(成功时会输出 "Verified OK")。 在代码中(Python):from cryptography.hazmat.primitives.asymmetric import rsa, padding from cryptography.hazmat.primitives import hashes private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048) signature = private_key.sign(b"message", padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH), hashes.SHA256()) public_key = private_key.public_key() public_key.verify(signature, b"message", padding.PSS(...), hashes.SHA256()) # No error if valid可将其用于验证交易或文档的真实性。
图谱关系
- 相关集群:computer-science
- 链接至:network-security(共享 TLS 和 PKI 功能)
- 关联:data-privacy(通过加密和哈希功能)
- 重叠领域:blockchain-tech(通过数字签名和 ZKP)
- 集成:quantum-computing(用于抗量子算法)