{ "info": { "author": "jingh", "author_email": "jingh.lib@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "GMSSL python 2.7.14\n========\nGmSSL\u662f\u4e00\u4e2a\u5f00\u6e90\u7684\u52a0\u5bc6\u5305\u7684python\u5b9e\u73b0\uff0c\u652f\u6301SM2/SM3/SM4\u7b49\u56fd\u5bc6(\u56fd\u5bb6\u5546\u7528\u5bc6\u7801)\u7b97\u6cd5\u3001\u9879\u76ee\u91c7\u7528\u5bf9\u5546\u4e1a\u5e94\u7528\u53cb\u597d\u7684\u7c7bBSD\u5f00\u6e90\u8bb8\u53ef\u8bc1\uff0c\u5f00\u6e90\u4e14\u53ef\u4ee5\u7528\u4e8e\u95ed\u6e90\u7684\u5546\u4e1a\u5e94\u7528\u3002\n\n### \u5b89\u88c5\n\n```shell\npip install gmssl\n```\n\n### SM2\u7b97\u6cd5\nRSA\u7b97\u6cd5\u7684\u5371\u673a\u5728\u4e8e\u5176\u5b58\u5728\u4e9a\u6307\u6570\u7b97\u6cd5\uff0c\u5bf9ECC\u7b97\u6cd5\u800c\u8a00\u4e00\u822c\u6ca1\u6709\u4e9a\u6307\u6570\u653b\u51fb\u7b97\u6cd5\nSM2\u692d\u5706\u66f2\u7ebf\u516c\u94a5\u5bc6\u7801\u7b97\u6cd5\uff1a\u6211\u56fd\u81ea\u4e3b\u77e5\u8bc6\u4ea7\u6743\u7684\u5546\u7528\u5bc6\u7801\u7b97\u6cd5\uff0c\u662fECC\uff08Elliptic Curve Cryptosystem\uff09\u7b97\u6cd5\u7684\u4e00\u79cd\uff0c\u57fa\u4e8e\u692d\u5706\u66f2\u7ebf\u79bb\u6563\u5bf9\u6570\u95ee\u9898\uff0c\u8ba1\u7b97\u590d\u6742\u5ea6\u662f\u6307\u6570\u7ea7\uff0c\u6c42\u89e3\u96be\u5ea6\u8f83\u5927\uff0c\u540c\u7b49\u5b89\u5168\u7a0b\u5ea6\u8981\u6c42\u4e0b\uff0c\u692d\u5706\u66f2\u7ebf\u5bc6\u7801\u8f83\u5176\u4ed6\u516c\u94a5\u7b97\u6cd5\u6240\u9700\u5bc6\u94a5\u957f\u5ea6\u5c0f\u5f88\u591a\u3002\n\ngmssl\u662f\u5305\u542b\u56fd\u5bc6SM2\u7b97\u6cd5\u7684Python\u5b9e\u73b0\uff0c \u63d0\u4f9b\u4e86 `encrypt`\u3001 `decrypt`\u7b49\u51fd\u6570\u7528\u4e8e\u52a0\u5bc6\u89e3\u5bc6\uff0c \u7528\u6cd5\u5982\u4e0b\uff1a\n\n#### 1. \u521d\u59cb\u5316`CryptSM2`\n\n```python\nimport base64\nimport binascii\nfrom gmssl import sm2, func\n#16\u8fdb\u5236\u7684\u516c\u94a5\u548c\u79c1\u94a5\nprivate_key = '00B9AB0B828FF68872F21A837FC303668428DEA11DCD1B24429D0C99E24EED83D5'\npublic_key = 'B9C9A6E04E9C91F7BA880429273747D7EF5DDEB0BB2FF6317EB00BEF331A83081A6994B8993F3F5D6EADDDB81872266C87C018FB4162F5AF347B483E24620207'\nsm2_crypt = sm2.CryptSM2(\n public_key=public_key, private_key=private_key)\n```\n\n#### 2. `encrypt`\u548c`decrypt`\n\n```python\n#\u6570\u636e\u548c\u52a0\u5bc6\u540e\u6570\u636e\u4e3abytes\u7c7b\u578b\ndata = \"111\"\nenc_data = sm2_crypt.encrypt(data)\ndec_data =sm2_crypt.decrypt(enc_data)\nassert dec_data == data\n```\n\n#### 3. `sign`\u548c`verify`\n```python\ndata = \"111\" # bytes\u7c7b\u578b\nrandom_hex_str = func.random_hex(sm2_crypt.para_len)\nsign = sm2_crypt.sign(data, random_hex_str) # 16\u8fdb\u5236\nassert sm2_crypt.verify(sign, data) # 16\u8fdb\u5236\n```\n\n### SM4\u7b97\u6cd5\n\n\u56fd\u5bc6SM4(\u65e0\u7ebf\u5c40\u57df\u7f51SMS4)\u7b97\u6cd5\uff0c \u4e00\u4e2a\u5206\u7ec4\u7b97\u6cd5\uff0c \u5206\u7ec4\u957f\u5ea6\u4e3a128bit\uff0c \u5bc6\u94a5\u957f\u5ea6\u4e3a128bit\uff0c\n\u7b97\u6cd5\u5177\u4f53\u5185\u5bb9\u53c2\u7167[SM4\u7b97\u6cd5](https://drive.google.com/file/d/0B0o25hRlUdXcbzdjT0hrYkkwUjg/view?usp=sharing)\u3002\n\ngmssl\u662f\u5305\u542b\u56fd\u5bc6SM4\u7b97\u6cd5\u7684Python\u5b9e\u73b0\uff0c \u63d0\u4f9b\u4e86 `encrypt_ecb`\u3001 `decrypt_ecb`\u3001 `encrypt_cbc`\u3001\n`decrypt_cbc`\u7b49\u51fd\u6570\u7528\u4e8e\u52a0\u5bc6\u89e3\u5bc6\uff0c \u7528\u6cd5\u5982\u4e0b\uff1a\n\n#### 1. \u521d\u59cb\u5316`CryptSM4`\n\n```python\nfrom gmssl.sm4 import CryptSM4, SM4_ENCRYPT, SM4_DECRYPT\n\nkey = '3l5butlj26hvv313'\nvalue = '111' # bytes\u7c7b\u578b\niv = '\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' # bytes\u7c7b\u578b\ncrypt_sm4 = CryptSM4()\n```\n\n#### 2. `encrypt_ecb`\u548c`decrypt_ecb`\n\n```python\n\ncrypt_sm4.set_key(key, SM4_ENCRYPT)\nencrypt_value = crypt_sm4.crypt_ecb(value) # bytes\u7c7b\u578b\ncrypt_sm4.set_key(key, SM4_DECRYPT)\ndecrypt_value = crypt_sm4.crypt_ecb(encrypt_value) # bytes\u7c7b\u578b\nassert value == decrypt_value\n\n```\n\n#### 3. `encrypt_cbc`\u548c`decrypt_cbc`\n\n```python\n\ncrypt_sm4.set_key(key, SM4_ENCRYPT)\nencrypt_value = crypt_sm4.crypt_cbc(iv , value) # bytes\u7c7b\u578b\ncrypt_sm4.set_key(key, SM4_DECRYPT)\ndecrypt_value = crypt_sm4.crypt_cbc(iv , encrypt_value) # bytes\u7c7b\u578b\nassert value == decrypt_value\n\n```\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/knitmesh/gmssl", "keywords": "", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "gmssl-tools", "package_url": "https://pypi.org/project/gmssl-tools/", "platform": "all platform", "project_url": "https://pypi.org/project/gmssl-tools/", "project_urls": { "Homepage": "https://github.com/knitmesh/gmssl" }, "release_url": "https://pypi.org/project/gmssl-tools/2.7.8/", "requires_dist": null, "requires_python": "", "summary": "Pure-Python SM2/SM3/SM4 implementation", "version": "2.7.8" }, "last_serial": 4295448, "releases": { "2.7.8": [ { "comment_text": "", "digests": { "md5": "7feef2bfdc08784926c719750112a5bb", "sha256": "0262c7f64105b5ed0c327bc86964339627eac9cc3ca400798e9d6536eb84b6cf" }, "downloads": -1, "filename": "gmssl_tools-2.7.8-py2-none-any.whl", "has_sig": false, "md5_digest": "7feef2bfdc08784926c719750112a5bb", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 11768, "upload_time": "2018-09-21T08:57:33", "url": "https://files.pythonhosted.org/packages/18/3d/9443408be0bcbc642ebf3202515df4889f8b4de53665fd436686754d1472/gmssl_tools-2.7.8-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "411907b4e569a727c4586ce84262eb74", "sha256": "4caed24a9c35e89b215d61a062d4b18a26183a8ea7a36638937af00f3a3f10da" }, "downloads": -1, "filename": "gmssl-tools-2.7.8.tar.gz", "has_sig": false, "md5_digest": "411907b4e569a727c4586ce84262eb74", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9660, "upload_time": "2018-09-21T08:56:23", "url": "https://files.pythonhosted.org/packages/a6/dc/aaab91531d946c5d358373c002142f90cbcd110448bb11453b3271d2160d/gmssl-tools-2.7.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7feef2bfdc08784926c719750112a5bb", "sha256": "0262c7f64105b5ed0c327bc86964339627eac9cc3ca400798e9d6536eb84b6cf" }, "downloads": -1, "filename": "gmssl_tools-2.7.8-py2-none-any.whl", "has_sig": false, "md5_digest": "7feef2bfdc08784926c719750112a5bb", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 11768, "upload_time": "2018-09-21T08:57:33", "url": "https://files.pythonhosted.org/packages/18/3d/9443408be0bcbc642ebf3202515df4889f8b4de53665fd436686754d1472/gmssl_tools-2.7.8-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "411907b4e569a727c4586ce84262eb74", "sha256": "4caed24a9c35e89b215d61a062d4b18a26183a8ea7a36638937af00f3a3f10da" }, "downloads": -1, "filename": "gmssl-tools-2.7.8.tar.gz", "has_sig": false, "md5_digest": "411907b4e569a727c4586ce84262eb74", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9660, "upload_time": "2018-09-21T08:56:23", "url": "https://files.pythonhosted.org/packages/a6/dc/aaab91531d946c5d358373c002142f90cbcd110448bb11453b3271d2160d/gmssl-tools-2.7.8.tar.gz" } ] }