GM algorithms implemented in pure python.
Project description
gmalg
GM algorithms implemented in pure python.
Install
pip install gmalg
Implemented Core Algorithms
- ZUC Stream Cipher Algorithm
- SM2 Public Key Cryptograhpic Algorithm Based on Elliptic Curves
- SM3 Cryptogrpahic Hash Algorithm
- SM4 Block Cipher Algorithm
- SM9 Identification Cryptographic Algorithm
Usage
ZUC Generate pseudo-random key stream
import gmalg
zuc = gmalg.ZUC(bytes.fromhex("3d4c4be96a82fdaeb58f641db17b455b"),
bytes.fromhex("84319aa8de6915ca1f6bda6bfbd8c766"))
print(zuc.generate().hex())
print(zuc.generate().hex())
SM3 Compute hash value
import gmalg
sm3 = gmalg.SM3()
print(sm3.value().hex())
sm3.update(b"I'm SM3 algorithm.")
print(sm3.value().hex())
SM4 Encrypt/Decrypt
import gmalg
sm4 = gmalg.SM4(bytes.fromhex("0123456789ABCDEFFEDCBA9876543210"))
cipher = sm4.encrypt(b"0102030405060708")
print(cipher.hex())
print(sm4.decrypt(cipher))
SM2 Sign/Verify
import gmalg
sm2 = gmalg.SM2(
bytes.fromhex("3945208F 7B2144B1 3F36E38A C6D39F95 88939369 2860B51A 42FB81EF 4DF7C5B8"),
b"1234567812345678",
bytes.fromhex("04 09F9DF31 1E5421A1 50DD7D16 1E4BC5C6 72179FAD 1833FC07 6BB08FF3 56F35020"
"CCEA490C E26775A5 2DC6EA71 8CC1AA60 0AED05FB F35E084A 6632F607 2DA9AD13"),
)
msg = b"I'm SM2 sign/verify algorithm."
r, s = sm2.sign(msg)
print(r.hex())
print(s.hex())
print(sm2.verify(msg, r, s))
SM2 Encrypt/Decrypt
import gmalg
sm2 = gmalg.SM2(
bytes.fromhex("3945208F 7B2144B1 3F36E38A C6D39F95 88939369 2860B51A 42FB81EF 4DF7C5B8"),
P=bytes.fromhex("04 09F9DF31 1E5421A1 50DD7D16 1E4BC5C6 72179FAD 1833FC07 6BB08FF3 56F35020"
"CCEA490C E26775A5 2DC6EA71 8CC1AA60 0AED05FB F35E084A 6632F607 2DA9AD13"),
)
cipher = sm2.encrypt(b"I'm SM2 encrypt/decrypt algorithm.")
print(cipher.hex())
print(sm2.decrypt(cipher))
Go to [docs:TODO] see more detailed usages.
If you think this project is helpful to you, :star: it and let more people see!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
gmalg-0.8.10.tar.gz
(14.5 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
gmalg-0.8.10-py3-none-any.whl
(15.0 kB
view details)
File details
Details for the file gmalg-0.8.10.tar.gz.
File metadata
- Download URL: gmalg-0.8.10.tar.gz
- Upload date:
- Size: 14.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
65eb7833ca724d8147942242d255a6ff5fd913e7361dfc09b497fdb89414a170
|
|
| MD5 |
bdbe7420b5e7ce61825055a90ddded13
|
|
| BLAKE2b-256 |
0e384f34b3ec79e80ddfeb97407460e711127e1eb17f95c4118778598842af00
|
File details
Details for the file gmalg-0.8.10-py3-none-any.whl.
File metadata
- Download URL: gmalg-0.8.10-py3-none-any.whl
- Upload date:
- Size: 15.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9f2432df1aba54aacbdd10a5958f97aca17f4d190c34f4d068475824a12348a2
|
|
| MD5 |
e30621e65a559ad9eb474c4f6f789772
|
|
| BLAKE2b-256 |
e5a9a126b80d8f9a3b1a52486d6bde85a002da941742a878e61e8c87aa64b83d
|