{"id":20383912,"url":"https://github.com/hyperledger-twgc/java-gm","last_synced_at":"2025-09-26T13:30:35.016Z","repository":{"id":39155673,"uuid":"291878611","full_name":"Hyperledger-TWGC/java-gm","owner":"Hyperledger-TWGC","description":"Java语言国密基础库","archived":false,"fork":false,"pushed_at":"2024-07-16T15:59:29.000Z","size":227,"stargazers_count":47,"open_issues_count":7,"forks_count":19,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-01-10T03:09:39.737Z","etag":null,"topics":["crypto","gm","hash","java","sm2","sm3","sm4"],"latest_commit_sha":null,"homepage":"","language":"Java","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/Hyperledger-TWGC.png","metadata":{"files":{"readme":"README.md","changelog":null,"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-09-01T02:45:41.000Z","updated_at":"2024-07-08T13:25:55.000Z","dependencies_parsed_at":"2023-12-11T16:30:41.996Z","dependency_job_id":"360f01dd-728f-4579-8a0e-9cd036010d10","html_url":"https://github.com/Hyperledger-TWGC/java-gm","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hyperledger-TWGC%2Fjava-gm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hyperledger-TWGC%2Fjava-gm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hyperledger-TWGC%2Fjava-gm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hyperledger-TWGC%2Fjava-gm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Hyperledger-TWGC","download_url":"https://codeload.github.com/Hyperledger-TWGC/java-gm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234309765,"owners_count":18811984,"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":["crypto","gm","hash","java","sm2","sm3","sm4"],"created_at":"2024-11-15T02:25:01.152Z","updated_at":"2025-09-26T13:30:34.701Z","avatar_url":"https://github.com/Hyperledger-TWGC.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# java-gm\n\n基于BouncyCastle实现国密算法SM2、SM3、SM4的操作类，并验证与其他语言（NodeJS、Go）实现的国密库的互操作性。\n\n[![Build Status](https://dev.azure.com/Hyperledger/TWGC/_apis/build/status/Hyperledger-TWGC.java-gm?branchName=master)](https://dev.azure.com/Hyperledger/TWGC/_build/latest?definitionId=129\u0026branchName=master)\n\n## Feature 功能支持列表\n\n|  SM2功能   | 支持范围  | \n|  ----  | ----  |\n| Generate KeyPair  | `是` |\n| Derive public key from private key  | `是` |\n| Sign  | `是` |\n| Verify | `是` |\n| PEM格式导出 | `私钥/公钥/CSR`|\n| PEM文件加密 | RFC5958 |\n| PEM格式导入 | `私钥/公钥/CSR` |\n \n 备注：\n \n C1C3C2和SM2SM3作为默认的加密和Hash算法，同时接口层面保留C1C2C3和其他Hash方式的支持。\n\n|  SM4功能   | 支持范围  | \n|  ----  | ----  |\n| Generate Key |  |\n| Encrypt, Decrypt | `是` |\n| PEM格式导出 |   |\n| PEM文件加密 | |\n| 分组模式 | ECB/CBC/CFB/OFB/CTR |\n\n\n|  SM3功能   | 支持范围  | \n|  ----  | ----  |\n| 当前语言Hash接口兼容 | `是` |\n\n## ObjectPoolSupport\n我们采用了可配置的对象池的方案来提供相对便利的多线程支持。\n如:\n```\n    static SM2EnginePool sm2EnginePool = new SM2EnginePool(SM2Engine.Mode.C1C3C2);\n    SM2Engine sm2Engine = sm2EnginePool.borrowObject();\n    byte[] encrypted = instance.encrypt(sm2Engine, this.pubKey, message);\n    byte[] rs = instance.decrypt(sm2Engine, this.privKey, encrypted);\n    Assert.assertEquals(new String(message), new String(rs));\n    sm2EnginePool.returnObject(sm2Engine);\n```\n具体对象池的配置参考如下文件：\n`pool-config.yaml`,\n我们目前尚未使用统一的对象池，而是根据不同密码学算法使用不同的对象池。\n这里是考虑到不同算法的执行效率并不相同，因此例如sm2+sm3的操作：\n我们可以考虑用一个数量更小的sm3对象池，来对接一个sm2对象池，来实现摘要（SM3）签名（SM2）这一密码学实现。\n\n## Terminology 术语\n- SM2: 国密椭圆曲线算法库\n- SM3: 国密hash算法库\n- SM4: 国密分组密码算法库\n\n## How to Contribute 贡献须知\nWe welcome contributions to Hyperledger in many forms, and there's always plenty to do!\n\nPlease visit the [contributors guide](CONTRIBUTING.md) in the\ndocs to learn how to make contributions to this exciting project.\n\n\u003ca rel=\"license\" href=\"http://creativecommons.org/licenses/by/4.0/\"\u003e\u003cimg alt=\"Creative Commons License\" style=\"border-width:0\" src=\"https://i.creativecommons.org/l/by/4.0/88x31.png\" /\u003e\u003c/a\u003e\u003cbr /\u003eThis work is licensed under a \u003ca rel=\"license\" href=\"http://creativecommons.org/licenses/by/4.0/\"\u003eCreative Commons Attribution 4.0 International License\u003c/a\u003e.\n\n## License 许可证\nHyperledger Project source code files are made available under the Apache License, Version 2.0 (Apache-2.0), located in the [LICENSE](LICENSE) file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyperledger-twgc%2Fjava-gm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhyperledger-twgc%2Fjava-gm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyperledger-twgc%2Fjava-gm/lists"}