基于 Py4J 的 Java-Python 加密算法桥接服务框架,支持 AES、RSA、国密 SM2/SM3/SM4 等加解密算法,以及 Base64、Hex、URL 等常用编解码算法。
- 对称加密: AES (CBC/GCM)、国密 SM4 (CBC/ECB)
- 非对称加密: RSA (加密/解密/签名/验签)、国密 SM2 (加密/解密/签名/验签)
- 摘要算法: 国密 SM3 (摘要/HMAC)
- 编解码: Base64、Hex、URL 编码/解码
- 插件化扩展: 基于 Java SPI 机制,支持热插拔扩展更多算法
- 跨语言调用: Python 端通过 Py4J 透明调用 Java 加密能力
- Java 17 + Maven
- py4j 0.10.9.7
- BouncyCastle 1.78.1 (国密算法支持)
- Python 3.9+ + uv + pytest
mvn clean package
java -jar target/py4j_platform-1.0.0.jar默认监听端口 25333。
from py4j_crypto import CryptoGatewayClient, CryptoAPI
with CryptoGatewayClient() as client:
crypto = CryptoAPI(client)
# SM2 加解密
pub, priv = crypto.sm2_generate_keypair()
encrypted = crypto.sm2_encrypt("Hello, SM2!", pub)
decrypted = crypto.sm2_decrypt(encrypted, priv)
# Base64 编解码
encoded = crypto.base64_encode("Hello, World!")
decoded = crypto.base64_decode(encoded)
# 查看所有可用算法
print(crypto.list_algorithms())cd python
uv sync
uv run pytest tests/ -vpy4j_platform/
├── src/main/java/top/oxff/ # Java 服务端源码
│ ├── gateway/ # Py4J Gateway 入口
│ ├── api/ # 服务接口
│ ├── core/ # 核心框架 (引擎/模型/异常)
│ ├── algorithm/ # 算法实现
│ │ ├── symmetric/ # 对称加密 (AES/SM4)
│ │ ├── asymmetric/ # 非对称加密 (RSA/SM2)
│ │ ├── digest/ # 摘要 (SM3)
│ │ └── codec/ # 编解码 (Base64/Hex/URL)
│ └── plugin/ # 插件系统
├── python/ # Python 客户端
│ ├── src/py4j_crypto/ # Python API 封装
│ └── tests/ # pytest 测试
└── doc/ # 文档
实现 top.oxff.core.engine.CryptoEngine 接口,在 EngineFactory 中注册即可添加新算法:
EngineFactory.register("CUSTOM", CustomEngine::new);或通过 Java SPI 机制,在 META-INF/services/top.oxff.algorithm.spi.AlgorithmProvider 中注册 AlgorithmProvider 实现。
本项目采用 Apache License 2.0 开源协议。
本软件提供的加密算法实现仅供学习和合法用途使用。请遵守当地法律法规,密码学软件可能受出口管制法规约束。详见 SECURITY.md 和 LEGAL.md。