Get the FREE Ultimate OpenClaw Setup Guide →
w

Pywayne Crypto

Verified

@wangyendt

npx machina-cli add skill @wangyendt/crypto-2 --openclaw
Files (1)
SKILL.md
4.3 KB

Pywayne Crypto

加密解密工具集,支持对称加密、自定义密码和代码混淆保护。

Quick Start

from pywayne.crypto import encrypt, decrypt

# 基础加密/解密
encrypted = encrypt("Hello World")
decrypted = decrypt(encrypted)
print(decrypted)  # 输出: Hello World

# 使用自定义密码加密
encrypted = encrypt("Secret message", "my_password")
decrypted = decrypt(encrypted, "my_password")
print(decrypted)  # 输出: Secret message

encrypt - 加密函数

加密字符串或字节数据。

# 文本加密
encrypted = encrypt("机密信息", "password")
# 字节加密
byte_data = b"binary data"
encrypted = encrypt(byte_data, "password")

参数

参数类型说明
textstr or bytes要加密的文本数据或字节数据
passwordstr可选,自定义密码。不提供时使用默认密钥

返回值str - base64 编码的加密字符串

参数类型错误处理

  • 当输入不是 strbytes 时抛出 ValueError

decrypt - 解密函数

解密之前加密的字符串。

# 解密(使用默认密钥)
decrypted = decrypt(encrypted_text)

# 解密(使用自定义密码)
decrypted = decrypt(encrypted_text, "my_password")

参数

参数类型说明
encrypted_textstr要解密的 base64 编码字符串
passwordstr可选,解密密码。必须与加密时使用的密码相同

返回值str - 解密后的原始字符串

批量操作

支持批量加密和解密操作。

from pywayne.crypto import encrypt, decrypt

data = ["数据1", "数据2", "数据3"]
password = "batch_password"

# 批量加密
encrypted_list = encrypt_batch(data, password)

# 批量解密
decrypted_list = decrypt_batch(encrypted_list, password)

参数

函数参数说明
encrypt_batch(data_list, password)data_list: 数据列表password: 密码
decrypt_batch(encrypted_list, password)encrypted_list: 加密数据列表password: 密码

返回值list[str] - 解密结果列表(失败项目为 None)

配置文件管理

保存和加载加密配置文件(JSON 格式)。

from pywayne.crypto import encrypt, decrypt

# 保存配置
config = {"database": {"host": "localhost", "username": "admin", "password": "secret"}}
save_config(config, "master_password", "config.enc")

# 加载配置
loaded_config = load_config("master_password", "config.enc")
print(loaded_config)  # 输出: {'database': {...}}

参数

函数参数说明
save_config(config_dict, password, filename)config_dict: 配置字典password: 加密密码
load_config(password, filename)password: 解密密码filename: 配置文件名

异常

  • ValueError:配置文件解密失败(密码错误或数据损坏)

加密策略

模块采用分层加密策略,优先使用 Fernet,回退到 XOR。

| 策略 | 说明 | |------|------|------| | Fernet 加密(推荐) | AES-128 对称加密,带消息完整性验证 | | XOR 加密(回退) | 简单异或加密,无依赖,基本功能 | | 代码混淆保护 | Base64 编码隐藏、动态函数生成、命名空间清理 |

错误处理

完善的异常处理机制,支持密码错误、数据格式错误、解密失败等情况。

# 密码错误
try:
    decrypted = decrypt(encrypted_text, "wrong_password")
except ValueError:
    print("错误: 解密失败,密码不正确")

# 数据格式错误
try:
    encrypted = encrypt(123)
except ValueError:
    print("错误: 输入类型必须是字符串或字节")

最佳实践

  • 密码妥善保管,避免硬编码在源码中
  • 高安全性要求的应用使用专业加密库
  • 密钥通过环境变量传递,避免写入日志

Source

git clone https://clawhub.ai/wangyendt/crypto-2View on GitHub

Overview

Pywayne Crypto is an encryption/decryption toolkit for strings and bytes. It prioritizes Fernet (AES-128) as the default scheme and can fall back to XOR, with optional password protection, code obfuscation, and batch processing to handle multiple items efficiently.

How This Skill Works

Pywayne Crypto runs a layered approach: it first tries Fernet (AES-128) for encryption, with an optional password, and falls back to XOR if needed. The library exposes single-shot (encrypt/decrypt) and batch (encrypt_batch/decrypt_batch) functions, plus config helpers (save_config/load_config). It also includes code obfuscation protections such as Base64 hiding, dynamic function generation, and namespace cleanup.

When to Use It

  • Encrypt sensitive strings or bytes before storage or transmission
  • Encrypt with a custom password for quick, self-contained protection
  • Process large data sets in batches via encrypt_batch and decrypt_batch
  • Save and load encrypted configurations (JSON) securely with save_config/load_config
  • Obfuscate Python code or protect algorithms with built-in obfuscation features

Quick Start

  1. Step 1: from pywayne.crypto import encrypt, decrypt
  2. Step 2: encrypted = encrypt("Hello World")
  3. Step 3: decrypted = decrypt(encrypted)

Best Practices

  • Prefer Fernet (AES-128) as the default for strong security
  • Avoid hard-coding passwords; use environment variables or secret managers
  • Ensure the decryption password matches the one used for encryption
  • Validate input types; encrypt only str or bytes and handle ValueError
  • Test both default-key and password-based flows, and monitor decryption failures

Example Use Cases

  • Encrypt a secret message with a password and decrypt it with the same password
  • Encrypt binary data (e.g., file contents) and decrypt later for use
  • Batch encrypt a list of sensitive records and decrypt them in one step
  • Save a JSON configuration file securely with save_config and load_config
  • Obfuscate a small Python code snippet to deter casual analysis

Frequently Asked Questions

Add this skill to your agents
Sponsor this space

Reach thousands of developers