# CnPack 密码算法库 **Repository Path**: prograys/cncrypto ## Basic Information - **Project Name**: CnPack 密码算法库 - **Description**: CnPack 密码算法库以纯Object Pascal实现了国内外常见的加解密算法及中国国家商用密码算法,包括对称加密、非对称加密、杂凑等大类及众多其他基础辅助功能,支持 Delphi 5 至最新版本的 RAD Studio 及 Lazarus/FPC,并支持 32 位与 64 位的 Windows、MacOS、Linux 等操作系统。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 9 - **Created**: 2024-06-03 - **Last Updated**: 2024-06-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CnPack 密码算法库 ## 概述 CnPack 密码算法库(CnPack Crypto Library)源于 CnPack 开发组的开源项目 CnVcl 组件包(CnVcl Component Package),是一套以纯 Object Pascal 语言编写的开源加解密源码库,支持 Delphi 5 至最新版本的 RAD Studio,支持 C++Builder 5/6 及 Lazarus/FPC,并支持 32 位与 64 位的 Windows、MacOS、Linux 等操作系统。 CnPack 密码算法库致力于提供强大的加解密算法支持与数据安全保障。它覆盖了国内外常见的加解密算法及中国国家商用密码算法,包括对称加密、非对称加密、杂凑(或名散列、摘要、哈希)等大类及众多其他基础与辅助功能。 ## 许可协议 CnPack 开发包以开放源码(Open Source)的形式发布,遵守 CnPack 的许可协议,受 CnPack 许可协议的保护。License 文件中有该协议的详细描述,具体内容可参考协议文件。 ## 主要内容 - **对称加密**:SM4、AES、DES、3DES、RC4、ChaCha20、TEA、ZUC - **非对称加密**:RSA、ECC 椭圆曲线(魏尔斯特拉斯曲线,包括 SM2)、25519/448 椭圆曲线(蒙哥马利及扭曲爱德华曲线) - **杂凑**:SM3、MD5、SHA1、SHA2/SHA3 系列(192、256、384、512)、SHAKE、CRC8/16/32/64、Poly1305、FNV、一次性杂凑签名算法 OTS - **其他密码学领域**:SM9、同态加密、协同加密、格密码、NTRU - **编码解码**:Base64、ASN.1(DER/BER)、Hamming 校验 - **CA证书**:RSA/ECC 证书申请、签发与校验 - **大数支持**:大整数、大有理数、大浮点数、一元大数多项式、二元大数多项式、一元大有理数分式 - **运算支持**:素数运算、浮点复数运算、位运算、矩阵运算、离散傅立叶变换、128 位整型支持 - **其他**:关联数据认证加密、动态口令 OTP、密钥派生 KDF、秘密共享的 Shamir 门限方案及 Feldman VSS 方案 ## 国密支持 CnPack 密码算法库对中国国家商用密码算法标准有着完整而强大的支持: - **SM2**:GM/T 0003.x-2012《SM2椭圆曲线公钥密码算法》,1~5 - **SM3**:GM/T 0004-2012《SM3密码杂凑算法》 - **SM4**:GM/T 0002-2012《SM4分组密码算法》 - **SM9**:GM/T 0044-2016《SM9 标识密码算法》 - **ZUC**:GM/T 0001.x-2012《祖冲之序列密码算法》,1~3 另外也包括 **OTP**:《GB/T 38556-2020 信息安全技术动态口令密码应用技术规范》。 ## 安装与使用 ### 获取源码 有两种途径可获取最新版的 CnPack 密码算法库。第一种途径是 CnPack 网站上下载或 gitee 上直接拉取。第二种途径是 CnPack 网站上下载或 github 上拉取下载最新的 CnVcl 源码包,在 Windows 系统中解压后运行 cnvcl\GenCrypto.bat,即可在 cnvcl 的同级目录下生成 cncrypto 目录,内有 CnPack 密码算法库所有源码。日常 CnPack 密码算法库也是自 CnVcl 中维护再同步的。 ### 编译引入 CnPack 密码算法库不涉及 VCL/FMX 界面组件,仅是基础库的形式提供,因而可直接将 cncrypto\Source 目录加入 Delphi 的工程搜索路径,便可直接在工程中 uses 相应单元并调用。 另外 CnPack 密码算法库也提供了运行期包的形式,在任一版本 Delphi 中打开 cncrypto\Package\CnCrypto.dpk,即可编译成 BPL 使用。 注:如果在 Delphi 5 下编译 BPL,需手工将 requires 语句中的 vcl 改为 vcl50。 ## 测试用例 cncrypto\Test 目录下有一完整的命令行测试用例 CryptoTest.dpr,使用任一版本 Delphi 打开运行即可覆盖验证 CnPack 密码算法库的绝大多数功能,或用 C++Builder 5/6 打开 Crypto.bpr、或用 Lazarus 打开 Crypto.lpi,均同样可以运行。尾部两个用例耗时较长以小时计,跑时需有耐心。 ## 关于我们 CnPack 开发组由互联网上热爱 Delphi/C++Builder 程序开发的一群中国程序员自愿者自发组成,其目标是开发中国人自己的真正优秀的第三方免费开源产品。 - **网站**:https://www.cnpack.org - **邮件**:master@cnpack.org - **微信公众号**:CnPack开发组