crtencentblueking /
crypto-python-sdk
BlueKing crypto-python-sdk 是一个轻量级密码学工具包,为 Python 应用提供统一的加解密实现, 便于项目在不同的加密方式之间进行无侵入切换。 🍃 灵感由来 Python 加密库通常功能齐全,但上手并不轻松:开发者需要处理算法参数、密钥格式和数据分段等底层细节,业务代码很难保持简洁。项目进行国密改造时,还要同时兼容存量的 RSA、AES 和新增的 SM2、SM4,迁移成本会进一步上升。 crypto-pyt…
DTSoftware developmentDTLibrary / SDK
About
BlueKing crypto-python-sdk 是一个轻量级密码学工具包,为 Python 应用提供统一的加解密实现, 便于项目在不同的加密方式之间进行无侵入切换。 🍃 灵感由来 Python 加密库通常功能齐全,但上手并不轻松:开发者需要处理算法参数、密钥格式和数据分段等底层细节,业务代码很难保持简洁。项目进行国密改造时,还要同时兼容存量的 RSA、AES 和新增的 SM2、SM4,迁移成本会进一步上升。 crypto-python-sdk 为国密和国际主流算法提供风格统一的 API,常见场景只需调用 encrypt() 和 decrypt()。SDK 还提供分段加密、Django Model 字段集成等实用功能,可以直接接入现有项目。 可放心食用,已长期在生产环境,多项目 & 跨语言加解密交叉验证,支持包括 ARM、Apple M1 在内各个架构。 🚀 功能 提供加密统一抽象层,对接 cryptography / tongsuopy 等加密库,提供统一的加解密实现 支持国际主流密码学算法:AES、RSA 支持中国商用密码学算法:SM2、SM4 非对称加密支持 CBC、CTR、GCM、CFB 作为块密码模式 提供 iv、padding 等丰富的自定义加解密配置 集成 Django settings、ModelField 🔰 安装 shell $ pip install bk-crypto-python-sdk ⚙️ 快速开始 1)非对称加密 python from bkcrypto.asymmetric.ciphers import BaseAsymmetricCipher from bkcrypto.contrib.basic.ciphers import getasymmetriccipher 初始化 cipher 并默认生成密钥对 cipher: BaseAsymmetricCipher = getasymmetriccipher( ciphertype=constants.AsymmetricCipherType.RSA.value # or SM2 ) 获取密钥对 print(cipher.exportpublickey(), cipher.exportprivatekey(), sep="\n") 加解密 assert "123" == cipher.decrypt(cipher.encrypt("123")) 验签 assert cipher.verify(plaintext="123", signature=cipher.sign("123")) 2)对称加密 python import os from bkcrypto import constants from bkcrypto.symmetric.ciphers import BaseSymmetricCipher from bkcrypto.contrib.basic.ciphers import getsymmetriccipher 初始化 cipher cipher: BaseSymmetricCipher = getsymmetriccipher( ciphertype=constants.SymmetricCipherType.SM4.value, 随机生成 16 位密钥 common={"key": os.urandom(16)}, ) 加解密 assert "123" == cipher.decrypt(cipher.encrypt("123")) 3)Django 集成 在 Django Settings 维护 SDK 配置 python from bkcrypto import constants from bkcrypto.symmetric.options import AESSymmetricOptions, SM4SymmetricOptions from bkcrypto.asymmetric.options import RSAAsymmetricOptions, SM2AsymmetricOptions BKCRYPTO = { 算法类型选择 "ASYMMETRICCIPHERTYPE": constants.AsymmetricCipherType.RSA.value, "SYMMETRICCIPHERTYPE": constants.SymmetricCipherType.SM4.value, 对称加密实例,根据项目需要可以配置多个 "SYMMETRICCIPHERS": { "default": { 可选,用于远程、文件密钥拉取。 "getkeyconfig": "apps.utils.encrypt.key.getkeyconfig", 公共参数配置,不同 cipher 初始化时共用这部分参数 "common": {"key": "your key"}, "cipheroptions": { constants.SymmetricCipherType.AES.value: AESSymmetricOptions(keysize=16), constants.SymmetricCipherType.SM4.value: SM4SymmetricOptions(mode=constants.SymmetricMode.CTR), }, }, }, 非对称加密实例 "ASYMMETRICCIPHERS": {"default": {"common": {"publickeystring": "your key"}}}, } 全局皆可 import 引入,无须重复配置: python from bkcrypto.symmetric.ciphers import BaseSymmetricCipher from bkcrypto.contrib.django.ciphers import symmetricciphermanager using - 指定对称加密实例,默认使用 default cipher: BaseSymmetricCipher = symmetricciphermanager.cipher(using="default") assert "123" == cipher.decrypt(cipher.encrypt("123")) 也可用于 DB 加密字段: python from django.db import models from bkcrypto.contrib.django.fields import SymmetricTextField class IdentityData(models.Model): password = SymmetricTextField("密码", blank=True, null=True)
Discovery history
- 阮一峰周刊·用户投稿
Aug 28, 2026 · 1 observations
Discuss this product