7个版本
0.1.7 | 2020年9月17日 |
---|---|
0.1.6 | 2020年9月17日 |
#1126 in 密码学
14MB
437 行
包含 (静态库,8.5MB) gosm/libsm.a,(Windows DLL,5.5MB) gosm/libgosm.dll
rust_sm rust的国密实现
注意:
- win首次运行cargo run,调用动态链接(源代码目录下dll文件),运行时build.rs自动将动态链接拷贝到OUT_DIR,代码调用是通过env!得到out_dir位置,但是删除target文件夹,可执行文件无法找到链接文件,需要设置环境变量OUT_DIR,并且将libgosm.dll移动到这个文件夹。
- linux下运行cargo run 和build,由于采用静态库链接打包,没有任何影响。
- 所有代码在linux系统和win10经过测试,win只能使用gnu,不可以msvc。
- win10设置环境变量: set OUT_DIR=你存放libgosm.dll文件的文件夹位置。
- linux无需设置。
- 文档:https://docs.rs/rust_sm/0.1.4/rust_sm/
生成国密sm2密钥对,运行目录下私钥sk.pem,公钥pk.pem
GenKeyPair();
sm2 加密 解密
示例
let pk="./pk.pem";
let sk="./sk.pem";
let enc=Sm2Enc(pk,"testmsg");
let dec=Sm2Dec(sk,&enc);
sm2 签名验签
示例
let pk="./pk.pem";
let sk="./sk.pem";
let sign=Sm2Sign(sk,"testmsg");
let istrue=Sm2Verify(pk,"testmsg",&sign);
sm3 摘要加密
示例
let enc=Sm3("testmsg");
sm4 加密解密
示例
let k = "1234567890abcdef";
let enc=Sm4Enc(k,"testmsg");
let dec=SmeDec(k,&enc);