《密码系统设计》实验
实验项目
实验序号 实验名称 实验学时数 实验目的 实验内容 实验类型 学生学习预期成果
实验三 密码模块实现 6 基于商⽤密码标准的密码模块的实现 验证性 1.理解密码系统固件、接⼝等的设计和开发流程;2.参考《GMT 0018-2023密码设备应⽤接⼝规范》等商⽤密码标准设计实现密码算法进⾏加密/解密、签名/验签、密钥⽣成/导出等的接⼝;3.与其他商⽤密码模块进⾏兼容性测试。
裸卡 ukey
运行配置脚本
$ sudo ./config.sh
[sudo] password for zhanhe:
Service udev restarted!
run finished!
编译、运行
$ gcc -o test test.c -I./ /home/zhanhe/rodec/roceduhs0018sdfbak/HS_besti_linux_SDK_20200924/so/x86_64/libhs_guomi_vpn.so -lpthread
$ sudo ./test
open device success!
open session success!
pOutRand:
ad61a59b 10314f21 e1c4a0e9 7cf91a6d
SDF_GenerateRandom success!
SDF_ImportRootKeyAndDeviceSN fail, RootKey can only import once
SN:hs_00000000000014209
CosVer: 4.2.09
ImportKeyPair success
EccBackUpKeyPair success
ExportKeyPair success
SGD_SM3Hash success
SM2EncDec success
SM2SignVer success
SGD_SM1_ECB Encrypt datasize: 4000000 Bytes used time: 2365972 us
SGD_SM1_ECB Encrypt average speed: 13525096 bps
SGD_SM1_ECB Decrypt datasize: 4000000 Bytes used time: 2499315 us
SGD_SM1_ECB Decrypt average speed: 12803508 bps
SM1_ENC_DEC_ECB success.
SGD_SM1_CBC Encrypt datasize: 4000000 Bytes used time: 2453356 us
SGD_SM1_CBC Encrypt average speed: 13043357 bps
SGD_SM1_CBC Decrypt datasize: 4000000 Bytes used time: 2491306 us
SGD_SM1_CBC Decrypt average speed: 12844668 bps
SM1_ENC_DEC_CBC success.
SGD_SM1_OFB Encrypt datasize: 4000000 Bytes used time: 2173841 us
SGD_SM1_OFB Encrypt average speed: 14720487 bps
SGD_SM1_OFB Decrypt datasize: 4000000 Bytes used time: 2337224 us
SGD_SM1_OFB Decrypt average speed: 13691456 bps
SM1_ENC_DEC_OFB success.
SGD_SM4_ECB Encrypt datasize: 4000000 Bytes used time: 2800909 us
SGD_SM4_ECB Encrypt average speed: 11424862 bps
SGD_SM4_ECB Decrypt datasize: 4000000 Bytes used time: 2670783 us
SGD_SM4_ECB Decrypt average speed: 11981505 bps
SM4_ENC_DEC_ECB success.
SGD_SM4_CBC Encrypt datasize: 4000000 Bytes used time: 2620242 us
SGD_SM4_CBC Encrypt average speed: 12212612 bps
SGD_SM4_CBC Decrypt datasize: 4000000 Bytes used time: 2707366 us
SGD_SM4_CBC Decrypt average speed: 11819606 bps
SM4_ENC_DEC_CBC success.
SGD_SM4_OFB Encrypt datasize: 4000000 Bytes used time: 2433580 us
SGD_SM4_OFB Encrypt average speed: 13149351 bps
SGD_SM4_OFB Decrypt datasize: 4000000 Bytes used time: 2163395 us
SGD_SM4_OFB Decrypt average speed: 14791566 bps
SM4_ENC_DEC_OFB success.
SGD_IPSEC_SM1 Encrypt datasize: 4024000 Bytes used time: 3063057 us
SGD_IPSEC_SM1 Encrypt average speed: 10509761 bps
SGD_IPSEC_SM1 Decrypt datasize: 4024000 Bytes used time: 2953186 us
SGD_IPSEC_SM1 Decrypt average speed: 10900769 bps
SM1_ENC_DEC_IPSEC success.
SGD_IPSEC_SM4 Encrypt datasize: 4024 Bytes used time: 3417 us
SGD_IPSEC_SM4 Encrypt average speed: 9421129 bps
SGD_IPSEC_SM4 Decrypt datasize: 4024 Bytes used time: 3193 us
SGD_IPSEC_SM4 Decrypt average speed: 10082054 bps
SM4_ENC_DEC_IPSEC success.
龙脉Ukey
为了方便修改Makefile,我将so文件所在目录复制到了示例代码文件夹中。(注意执行cp命令时的路径)
pwd
/root/bestidiocs2024/ch06/longmaiskf0016-stu
cp -r skf/linux/x64 samples/skf/linux_mac/
cd samples/skf/linux_mac/
ls
encrypt enumdevinfo FingerMgrDemo include interruptTest monitordev readme.txt signature x64 x86
修改Makefile时,将LINKFLAGS修改为对于so文件所在路径
LINKFLAGS = …/x64/libgm3000.1.0.so
enumdevinfo
make
rm -f enumdevice
g++ -o enumdevice main.o …/x64/libgm3000.1.0.so
sudo ./enumdevice
Manufacturer: Longmai
AlgSymCap :1799
AlgAsymCap :198400,
AlgHashCap :7,
evAuthAlgId :1025,
Issuer : Longmai
Label : GM3000
SerialNumber : F1F9B462A08B786529407B5A05A1560
Total space:131072
Manufacturer: Longmai
AlgSymCap :1799
AlgAsymCap :198400,
AlgHashCap :7,
evAuthAlgId :1025,
Issuer : Longmai
Label : GM3000
SerialNumber : F1F9B462A08B786529407B5A05A1560
Total space:131072
Manufacturer: Longmai
AlgSymCap :1799
AlgAsymCap :198400,
AlgHashCap :7,
evAuthAlgId :1025,
Issuer : Longmai
Label : GM3000
SerialNumber : F1F9B462A08B786529407B5A05A1560
Total space:131072
Manufacturer: Longmai
AlgSymCap :1799
AlgAsymCap :198400,
AlgHashCap :7,
evAuthAlgId :1025,
Issuer : Longmai
Label : GM3000
SerialNumber : F1F9B462A08B786529407B5A05A1560
Total space:131072
Manufacturer: Longmai
AlgSymCap :1799
AlgAsymCap :198400,
AlgHashCap :7,
evAuthAlgId :1025,
Issuer : Longmai
Label : GM3000
SerialNumber : F1F9B462A08B786529407B5A05A1560
Total space:131072
Manufacturer: Longmai
AlgSymCap :1799
AlgAsymCap :198400,
AlgHashCap :7,
evAuthAlgId :1025,
Issuer : Longmai
Label : GM3000
SerialNumber : F1F9B462A08B786529407B5A05A1560
Total space:131072
Manufacturer: Longmai
AlgSymCap :1799
AlgAsymCap :198400,
AlgHashCap :7,
evAuthAlgId :1025,
Issuer : Longmai
Label : GM3000
SerialNumber : F1F9B462A08B786529407B5A05A1560
Total space:131072
Manufacturer: Longmai
AlgSymCap :1799
AlgAsymCap :198400,
AlgHashCap :7,
evAuthAlgId :1025,
Issuer : Longmai
Label : GM3000
SerialNumber : F1F9B462A08B786529407B5A05A1560
Total space:131072
Manufacturer: Longmai
AlgSymCap :1799
AlgAsymCap :198400,
AlgHashCap :7,
evAuthAlgId :1025,
Issuer : Longmai
Label : GM3000
SerialNumber : F1F9B462A08B786529407B5A05A1560
Total space:131072
Manufacturer: Longmai
AlgSymCap :1799
AlgAsymCap :198400,
AlgHashCap :7,
evAuthAlgId :1025,
Issuer : Longmai
Label : GM3000
SerialNumber : F1F9B462A08B786529407B5A05A1560
Total space:131072
monitordev
make
g++ -c -o main.o main.cpp
rm -f monitordev
g++ -o monitordev main.o …/x64/libgm3000.1.0.so -lpthread
encrypt
make
g++ -c -o main.o main.cpp
main.cpp: 在函数‘int main()’中:
main.cpp:24:19: 警告:ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
24 | char pUserPin = “123456”;
| ^~~~~~~~
main.cpp:30:19: 警告:ISO C++ forbids converting a string constant to ‘char’ [-Wwrite-strings]
30 | char *pData = “1234567812345678”;
| ^~~~~~~~~~~~~~~~~~
rm -f encryptTest
g++ -o encryptTest main.o …/x64/libgm3000.1.0.so
ls
encryptTest main.cpp main.o makefile makefile_mac
sudo ./encryptTest
encrypt data ok!
interruptTest64
make
rm -f interruptTest64
g++ -o interruptTest64 main.o …/x64/libgm3000.1.0.so
sudo ./interruptTest64
0 F1F9B462A08B786529407B5A05A1560
1 F1F9B462A08B786529407B5A05A1560
2 F1F9B462A08B786529407B5A05A1560
3 F1F9B462A08B786529407B5A05A1560
4 F1F9B462A08B786529407B5A05A1560
5 F1F9B462A08B786529407B5A05A1560
6 F1F9B462A08B786529407B5A05A1560
7 F1F9B462A08B786529407B5A05A1560
8 F1F9B462A08B786529407B5A05A1560
9 F1F9B462A08B786529407B5A05A1560
10 F1F9B462A08B786529407B5A05A1560
11 F1F9B462A08B786529407B5A05A1560
12 F1F9B462A08B786529407B5A05A1560
13 F1F9B462A08B786529407B5A05A1560
14 F1F9B462A08B786529407B5A05A1560
15 F1F9B462A08B786529407B5A05A1560
16 F1F9B462A08B786529407B5A05A1560
17 F1F9B462A08B786529407B5A05A1560
…
signature
make
g++ -c -o main.o main.cpp
main.cpp: 在函数‘int main()’中:
main.cpp:24:19: 警告:ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
24 | char pUserPin = “123456”;
| ^~~~~~~~
main.cpp:36:16: 警告:ISO C++ forbids converting a string constant to ‘char’ [-Wwrite-strings]
36 | char pubid = “1234567812345678”;
| ^~~~~~~~~~~~~~~~~~
main.cpp:38:19: 警告:ISO C++ forbids converting a string constant to ‘char’ [-Wwrite-strings]
38 | char *psrcdata = “1234567812345678”;
| ^~~~~~~~~~~~~~~~~~
rm -f signatureTest
g++ -o signatureTest main.o …/x64/libgm3000.1.0.so
sudo ./signatureTest
Signature successful.
Verify signature successful.
fingerMgr
sudo ./fingerMgrDemo
Finger 示例
- PIN码登录[SKF_VerifyPIN]
- 指纹录入[SKF_EnrollFingerInit,SKF_EnrollFinger]
- 指纹验证[SKF_VerifyFinger带UI]
- 删除指纹[SKF_DeleteFinger]
- 指纹测试[SKF_TestFinger]
- 解锁指纹[SKF_UnblockFinger]
- 获取指纹信息[SKF_GetFingerInfo]
- 指纹验证[SKF_VerifyPIN,UserPIN=]
- 获取设备类型[SKF_GetDevInfo]
- 获指纹取录入个数[SKF_HasFinger,SKF_GetFingerCount]
- EXIT
Select -->
Select -->9
SKF_GetDevInfo Successfully.
This is a common device.
Select -->1
Failed to Verify PIN .
Select -->2
Failed to Get Finger Info .
Select -->3
Failed to Verify Finger ,Error code = 00006d00 .
Select -->4
Failed to get finger info.
Select -->5
Prepare for fingerprint learning .
Failed to Verify Finger Init .
Select -->6
Failed to Unblock Finger.
Select -->7
Failed to get finger info.
Select -->8
Failed to Verify PIN .
monitordev
make
rm -f monitordev
g++ -o monitordev main.o …/x64/libgm3000.1.0.so -lpthread
sudo ./monitordev
SKF_WaitForDevEvent
Device moved.
F1F9B462A08B786529407B5A05A1560 SKF_WaitForDevEvent
Manufacturer: Longmai
Issuer : Longmai
Label : GM3000
SerialNumber : F1F9B462A08B786529407B5A05A1560
Total space:131072
实验记录中提交 gitee 课程项⽬链接,提交本次实验相关 git log运⾏结果
commit bc187b4b619cab2415a1afa9de3a9bc1658503d6
Author: LZJ lzj@outlook.com
Date: Sun Nov 17 22:29:01 2024 +0800
monitordev
commit 36406007882a7b7bb9e7b3257ada81625f5473ca
Author: LZJ lzj@outlook.com
Date: Sun Nov 17 22:25:47 2024 +0800
fingerMgr
commit 39a450c9a8a0a437e6013b701ee17c0beb8f2297
Author: LZJ lzj@outlook.com
Date: Sun Nov 17 22:23:33 2024 +0800
signature
commit d5f378e36526c47b6da8021f047cbdeea03ae52f
Author: LZJ lzj@outlook.com
Date: Sun Nov 17 22:21:23 2024 +0800
interrupt
commit a87fb49deec6e27c26d261ce30266488a3852e2f
Author: LZJ lzj@outlook.com
Date: Sun Nov 17 22:19:12 2024 +0800
encrypt
commit 8489476fbd7e099df5715e4d2c9bec36573de17a
Author: LZJ lzj@outlook.com
Date: Sun Nov 17 22:18:33 2024 +0800
monitordev
commit 01b95f3a1d56743cd874113468bd1fd1622ee8f2
Author: LZJ lzj@outlook.com
Date: Sun Nov 17 22:15:24 2024 +0800
enumdevinfo
commit 0b0768bdf4514f3154aeed3d45929e886dd97dfe
Author: LZJ lzj@outlook.com
Date: Sun Nov 17 22:06:08 2024 +0800
ukey_make
提交要求:
提交实践过程Markdown和转化的PDF文件
代码,文档托管到gitee或github等,推荐 gitclone
记录实验过程中遇到的问题,解决过程,反思等内容,完成实验报告相关内容