{"id":21162258,"url":"https://github.com/webankblockchain/wedpr-lab-crypto","last_synced_at":"2025-10-24T11:32:02.908Z","repository":{"id":39291055,"uuid":"324088550","full_name":"WeBankBlockchain/WeDPR-Lab-Crypto","owner":"WeBankBlockchain","description":"Cryptography libraries of WeDPR instant scenario-focused solutions for privacy-inspired business; WeDPR即时可用场景式隐私保护高效解决方案密码学算法组件","archived":false,"fork":false,"pushed_at":"2024-11-20T06:07:38.000Z","size":4774,"stargazers_count":32,"open_issues_count":5,"forks_count":11,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-11-20T07:19:51.818Z","etag":null,"topics":["blockchain","crypto","cryptography","homomorphic-encryption","privacy","rust","wedpr","zkp"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WeBankBlockchain.png","metadata":{"files":{"readme":"README.md","changelog":"Changelog.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-12-24T06:53:38.000Z","updated_at":"2024-11-20T06:07:44.000Z","dependencies_parsed_at":"2023-12-27T08:35:14.702Z","dependency_job_id":"894c3d2f-9965-429d-9174-5aef1c6fd505","html_url":"https://github.com/WeBankBlockchain/WeDPR-Lab-Crypto","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeBankBlockchain%2FWeDPR-Lab-Crypto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeBankBlockchain%2FWeDPR-Lab-Crypto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeBankBlockchain%2FWeDPR-Lab-Crypto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeBankBlockchain%2FWeDPR-Lab-Crypto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WeBankBlockchain","download_url":"https://codeload.github.com/WeBankBlockchain/WeDPR-Lab-Crypto/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225563827,"owners_count":17488900,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blockchain","crypto","cryptography","homomorphic-encryption","privacy","rust","wedpr","zkp"],"created_at":"2024-11-20T13:24:17.006Z","updated_at":"2025-10-24T11:32:02.839Z","avatar_url":"https://github.com/WeBankBlockchain.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 项目背景\n\n![WeDPR](https://wedpr-lab.readthedocs.io/zh_CN/latest/_static/images/wedpr_logo.png)\n\nWeDPR是一系列**即时可用场景式**隐私保护高效解决方案套件和服务（参见[WeDPR白皮书](https://mp.weixin.qq.com/s?__biz=MzU0MDY4MDMzOA==\u0026mid=2247483910\u0026idx=1\u0026sn=7b647dec9f046f1e6f94d103897f7efb\u0026scene=19#wechat_redirect)），由微众银行区块链团队自主研发。方案致力于解决业务数字化中隐私不“隐”、共享协作不可控等隐私保护风险痛点，消除隐私主体的隐私顾虑和业务创新的合规壁垒，助力基于隐私数据的核心价值互联和新兴商业探索，营造公平、对等、共赢的多方数据协作环境，达成数据价值跨主体融合和数据治理的可控平衡。\n\nWeDPR具备以下特色和优势：\n\n- **场景式解决方案**：已基于具有共性的场景需求，提炼出公开可验证密文账本、多方密文决策、多方密文排名、多方密文计算、多方安全随机数生成、选择性密文披露等高效技术方案框架模板，可应用于支付、供应链金融、跨境金融、投票、选举、榜单、竞拍、招标、摇号、抽检、审计、隐私数据聚合分析、数字化身份、数字化资质凭证、智慧城市、智慧医疗等广泛业务场景。\n- **即时可用**：高性能、高易用、跨平台跨语言实现、不依赖中心化可信服务、不依赖可信硬件、支持国密算法标准、隐私效果公开可验证，5分钟一键构建示例应用。\n- **透明可控**：隐私控制回归属主，杜绝数据未授权使用，在『数据可用而不可见』的基础上，进一步实现数据使用全程可监管、可追溯、可验证。\n\nWeDPR全面拥抱开放，将陆续开源一系列核心算法组件，进一步提升系统安全性的透明度，提供更透明、更可信的隐私保护效果。WeDPR-Lab就是这一系列开源的**核心算法组件**的集合。\n\n为便于开发者**仅对WeDPR-Lab中的密码算法组件进行选择性使用**，我们将WeDPR-Lab中涉及的所有密码算法组件进行拆分、迁移，重新独立包装形成一个新的密码模块仓库WeDPR-Lab-Crypto。\n\n**WeDPR-Lab-Crypto v1.2.0版本**开源主要内容如下：\n\n- 核心密码算法组件：**n选k不经意传输算法**：\n\n  - 其中，n和k均为任意正整数，k\u003cn。\n  \n  对于以下场景：\n  \n  - 数据方的数据目录中共有n条消息记录\n  \n  - 查询方选择k个消息的索引向数据方查询消息\n  \n  不经意传输算法能实现的具体隐私效果是：\n  \n  - 数据方无法得知查询方的查询索引，即：查询方查询索引隐私；\n  \n  - 除了所查索引的消息外，查询方无法得知数据方数据目录中的其他消息，即：数据方数据隐私。\n  \n- **二进制接口**，包括所有核心密码算法的高性能二进制接口；\n\n\n**WeDPR-Lab-Crypto v1.1.0版本**开源主要内容如下：\n\n- **核心密码算法组件**，包括：\n\n  -  分组加密算法：包括AES-256、国密SM4；\n  \n  -  哈希算法：包括SHA3、BLAKE2、RIPEMD-160；\n  \n  -  椭圆曲线计算：包括椭圆曲线BN128的点加、点乘及双线性对操作； \n  \n  -  数字签名算法：包括Ed25519；\n  \n  -  零知识证明的聚合验证：包括加和证明的聚合验证、乘积证明的聚合验证。\n\n- **二进制接口**，包括所有核心密码算法的高性能二进制接口；\n\n- **FFI接口**，支持交叉编译跨语言、跨平台所调用的FFI适配接口。\n  \n\n**WeDPR-Lab-Crypto v1.0.0版本**开源主要内容如下：\n\n- **核心密码算法组件**，包括：\n\n  - 基础编解码；\n \n  - 公钥加解密算法，包括基于Secp256k1曲线的ECIES加解密；\n  \n  - 哈希算法，包括Keccak256哈希算法与国密SM3；\n  \n  - 签名及验证，包括ECDSA签名与国密SM2；\n  \n  - 离散对数系统的零知识证明算法，包括加和证明及验证、乘积证明及验证；\n  \n  - 零知识范围证明及验证；\n  \n  - 基于椭圆曲线的可验证随机函数VRF(Verifiable Random Functions)。\n\n- **FFI接口**，支持交叉编译跨语言、跨平台所调用的FFI适配接口。\n\n（说明：由于在进行密码算法组件迁移过程中存在接口变动，所以WeDPR-Lab-Crypto v1.0.0与WeDPR-Lab Core v1.3.0之前版本的密码算法可能存在部分接口不兼容的情况，未来我们会持续进行修复、更新。）\n\n欢迎社区伙伴参与WeDPR-Lab的共建，一起为可信开放数字新生态的构建打造坚实、可靠的技术底座。\n\n# 安装\n\n### 安装Rust环境\n\n安装nightly版本的Rust开发环境，可参考[Rust官方文档](https://www.rust-lang.org/zh-CN/tools/install)。\n```bash\nrustup default nightly\n```\n\n### 下载WeDPR-Lab-Crypto源代码\n\n使用git命令行工具，执行如下命令。\n\n```bash\ngit clone https://github.com/WeBankBlockchain/WeDPR-Lab-Crypto.git\n```\n\n# 条件编译\n\nWeDPR-Lab-Crypto支持灵活的定制化算法选择，用户可根据业务场景、实际需求选择对应的密码算法。\n\n譬如，若用户只希望使用“ECIES加解密算法”的Java调用接口，则只需在WeDPR-Lab Crypto的Java FFI目录下，打开ECIES加解密算法对应的特性进行编译，即进行如下条件编译即可：\n\n```bash\ncd ffi/ffi_java/ffi_java_crypto/\ncargo build --features \"wedpr_f_base64, wedpr_f_ecies_secp256k1\" --no-default-features\n```\n\n\n**只有../ffi目录下涉及条件编译。**其中，除**ffi_c/ffi_c_crypto和ffi_java/ffi_java_crypto**，ffi_commom， ffi_macros与ffi_c/ffi_c_commom都为工具类方法，无需编译。\n\n### ffi_c与ffi_java条件编译方法\n\n（以ffi_c目录下的条件编译为例，ffi_java与之类似）\n\n1. 进入ffi_c目录：\n\n```bash\ncd ffi/ffi_c/ffi_c_crypto\n```\n\n2. 查看当前目录下的Cargo.toml中的[features]，明确本目录所有的条件编译选项。\n\n3. 使用cargo build进行编译时，默认打开了所有条件编译选项（默认编解码方式为base64），编译完成后，即生成本目录下所有密码算法的调用接口。\n\n4. 若只需使用部分密码算法的调用接口，则开启该密码算法对应的条件编译选项，编译时使用：\n\n```bash\ncargo build --features \"一个或多个feature名\" --no-default-features\n```\n\n其中，选择\"一个或多个feature名\"时，注意(binary接口无须使用base64或hex编码)：\n\n|    注意事项    |                         条件编译选项                         |\n| :------------: | :----------------------------------------------------------: |\n| 互斥条件编译项 |                 wedpr_f_base64, wedpr_f_hex                  |\n| 必选条件编译项 |                 wedpr_f_base64或wedpr_f_hex                  |\n| 可选条件编译项 | \"wedpr_f_ecies_secp256k1\", \"wedpr_f_signature_secp256k1\", \"wedpr_f_hash_keccak256\", \"wedpr_f_signature_sm2\", \"wedpr_f_hash_sm3\", \"wedpr_f_vrf_curve25519\", \"wedpr_f_crypto_block_cipher_aes\", \"wedpr_f_crypto_block_cipher_sm4\", \"wedpr_f_hash_ripemd160\", \"wedpr_f_hash_sha3\", \"wedpr_f_hash_blake2b\", \"wedpr_f_signature_ed25519\"  |\n\n# 接口文档\n\n查看WeDPR所有crate对应文档\n\n- [点击这里](https://crates.io/search?q=wedpr)\n\n# 其他相关文档\n\n- [WeDPR方案白皮书](https://mp.weixin.qq.com/s?__biz=MzU0MDY4MDMzOA==\u0026mid=2247483910\u0026idx=1\u0026sn=7b647dec9f046f1e6f94d103897f7efb\u0026scene=19#wechat_redirect)\n- [WeDPR-Lab用户文档](https://wedpr-lab.readthedocs.io/zh_CN/latest/index.html)\n\n# 项目贡献\n\n- 点亮我们的小星星(点击项目右上方Star按钮)\n- 提交代码(Pull Request)，参考我们的代码[贡献流程](./CONTRIBUTING.md)\n- [提问和提交BUG](https://github.com/WeBankBlockchain/WeDPR-Lab-Crypto/issues)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebankblockchain%2Fwedpr-lab-crypto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwebankblockchain%2Fwedpr-lab-crypto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebankblockchain%2Fwedpr-lab-crypto/lists"}