20221320冯泰瑞-实验一嵌入式开发基础-4-6学时实践过程记录

20221320-冯泰瑞-实验一(4-6学时)过程记录

一、参考相关内容,在Ubuntu或openEuler中(推荐openEuler)中使用OpenSSL库编程实现调用SM2(加密解密,签名验签),SM3(摘要计算,HMAC 计算),SM4(加密解密)算法,使用Markdown记录详细记录实践过程,每完成一项gitcommit一次。

(一)SM3的实践

fengtairui@fengtairui-virtual-machine:~/bestidiocs/ch03/sm3/sm3openssl$ make
gcc   -Wall -O2   -o test   test.c sm3hash.c   -lssl -lcrypto    
fengtairui@fengtairui-virtual-machine:~/bestidiocs/ch03/sm3/sm3openssl$ ./test
Raw data (sample1): abc
Hash length: 32 bytes.
Hash value:
66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8f4ba8e0

Raw data (sample2):
0x61  0x62  0x63  0x64  0x61  0x62  0x63  0x64  0x61  0x62  0x63  0x64  0x61  0x62  0x63  0x64  0x61  0x62  0x63  0x64  0x61  0x62  0x63  0x64  0x61  0x62  0x63  0x64  0x61  0x62  0x63  0x64  0x61  0x62  0x63  0x64  0x61  0x62  0x63  0x64  0x61  0x62  0x63  0x64  0x61  0x62  0x63  0x64  0x61  0x62  0x63  0x64  0x61  0x62  0x63  0x64  0x61  0x62  0x63  0x64  0x61  0x62  0x63  0x64  
Hash length: 32 bytes.
Hash value:
debe9ff92275b8a138604889c18e5a4d6fdb70e5387e5765293dcba39c0c5732

fengtairui@fengtairui-virtual-machine:~/bestidiocs/ch03/sm3/sm3openssl$ git add sm3hash.c sm3hash.h Makefile test.c test
fengtairui@fengtairui-virtual-machine:~/bestidiocs/ch03/sm3/sm3openssl$ git commit -m "openssl sm3"
[master 95052de] openssl sm3
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100755 ch03/sm3/sm3openssl/test
fengtairui@fengtairui-virtual-machine:~/bestidiocs/ch03/sm3/sm3openssl$ git log
commit 95052de83703162a24a897ade713a3b336958f17 (HEAD -> master)
Author: fengtairui <1978274655@qq.com>
Date:   Sun Oct 20 10:14:53 2024 +0800

    openssl sm3

(二)SM4的实践

fengtairui@fengtairui-virtual-machine:~/bestidiocs/ch03/sm4/sm4openssl$ make
gcc   -Wall -O2 -I ~/rocopenssl/include  -L ~/rocopenssl/lib -o test   sm4openssl.c   -lssl -lcrypto    
fengtairui@fengtairui-virtual-machine:~/bestidiocs/ch03/sm4/sm4openssl$ ./test
===== SM4-CBC Encryption and Decryption =====
sm4-cbc encryption successful. Ciphertext length: 16 bytes
Ciphertext:
0000: 45 E9 16 3A 1C 88 36 4D DD 64 1D 63 18 94 4A F4 
sm4-cbc decryption: Read ciphertext length: 16 bytes
sm4-cbc decryption result: 
Helloworld
Decrypted plaintext (hex):
0000: 48 65 6C 6C 6F 77 6F 72 6C 64 
fengtairui@fengtairui-virtual-machine:~/bestidiocs/ch03/sm4/sm4openssl$ git add cipher_sm4-cbc.dat Makefile sm4openssl.c test
fengtairui@fengtairui-virtual-machine:~/bestidiocs/ch03/sm4/sm4openssl$ git commit -m "openssl sm4"
[master 567f874] openssl sm4
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100755 ch03/sm4/sm4openssl/test
fengtairui@fengtairui-virtual-machine:~/bestidiocs/ch03/sm4/sm4openssl$ git log
commit 567f874ada5017eb2871f50af5c8f951886da893 (HEAD -> master)
Author: fengtairui <1978274655@qq.com>
Date:   Sun Oct 20 10:19:37 2024 +0800

    openssl sm4

二、参考相关内容,在Ubuntu或openEuler中(推荐openEuler)中使用GmSSL库编程实现调用SM2(加密解密,签名验签),SM3(摘要计算,HMAC 计算),SM4(加密解密)算法,使用Markdown记录详细记录实践过程,每完成一项gitcommit一次。

(一)SM2的实践

fengtairui@fengtairui-virtual-machine:~/bestidiocs/ch03/sm2/sm2gmssl$ make
gcc   -Wall -O2 -I ~/GmSSL-3.1.1-Linux/include     -L ~/GmSSL-3.1.1-Linux/lib   -lgmssl   -c sm2gmssl.c -o sm2gmssl.o  
sm2gmssl.c: In function ‘main’:
sm2gmssl.c:104:21: warning: passing argument 1 of ‘sm2_verify_init’ from incompatible pointer type [-Wincompatible-pointer-types]
  104 |     sm2_verify_init(&verify_ctx, &key, SM2_DEFAULT_ID, SM2_DEFAULT_ID_LENGTH);
      |                     ^~~~~~~~~~~
      |                     |
      |                     SM2_SIGN_CTX *
In file included from sm2gmssl.c:4:
/usr/local/include/gmssl/sm2.h:196:37: note: expected ‘SM2_VERIFY_CTX *’ but argument is of type ‘SM2_SIGN_CTX *’
  196 | int sm2_verify_init(SM2_VERIFY_CTX *ctx, const SM2_KEY *key, const char *id, size_t idlen);
      |                     ~~~~~~~~~~~~~~~~^~~
sm2gmssl.c:106:29: warning: passing argument 1 of ‘sm2_verify_update’ from incompatible pointer type [-Wincompatible-pointer-types]
  106 |     ret = sm2_verify_update(&verify_ctx, (const uint8_t *)message, message_len);
      |                             ^~~~~~~~~~~
      |                             |
      |                             SM2_SIGN_CTX *
/usr/local/include/gmssl/sm2.h:197:39: note: expected ‘SM2_VERIFY_CTX *’ but argument is of type ‘SM2_SIGN_CTX *’
  197 | int sm2_verify_update(SM2_VERIFY_CTX *ctx, const uint8_t *data, size_t datalen);
      |                       ~~~~~~~~~~~~~~~~^~~
sm2gmssl.c:112:29: warning: passing argument 1 of ‘sm2_verify_finish’ from incompatible pointer type [-Wincompatible-pointer-types]
  112 |     ret = sm2_verify_finish(&verify_ctx, signature, signature_len);
      |                             ^~~~~~~~~~~
      |                             |
      |                             SM2_SIGN_CTX *
/usr/local/include/gmssl/sm2.h:198:39: note: expected ‘SM2_VERIFY_CTX *’ but argument is of type ‘SM2_SIGN_CTX *’
  198 | int sm2_verify_finish(SM2_VERIFY_CTX *ctx, const uint8_t *sig, size_t siglen);
      |                       ~~~~~~~~~~~~~~~~^~~
gcc   -o sm2gmssl sm2gmssl.o -L ~/GmSSL-3.1.1-Linux/lib   -lgmssl      
fengtairui@fengtairui-virtual-machine:~/bestidiocs/ch03/sm2/sm2gmssl$ ./sm2gmssl
生成 SM2 密钥对...
SM2 密钥生成成功。
明文: Hello, SM2!
加密明文...
加密成功。
密文: 30740220770002F67897E64484E7C7C6D54AB8F13A9D721A7B915345CD2AA520732DB61C022100EE4B5CC435DA75406377E65EB641C6ACF7E8540AB18B307086D41770AF53103E0420B5B01885C1893FD02EB83556D4C7B46EE55034CCDDA6419F1559BC32BCE5AD0E040BB840AA93374B5722588DFC
解密密文...
解密成功。
解密后的明文: Hello, SM2!
要签名的消息: This is a message to be signed.
签名成功。
签名: 3046022100EE99AB315166E7A12673A8C26E77CB58AE62920FB20F0A4BBF39067D6B60ED64022100934D33E153D6232EF589D7026B3B5A96E43A49676D5B14B1567C91C17D9BEC5C
签名验证成功。
fengtairui@fengtairui-virtual-machine:~/bestidiocs/ch03/sm2/sm2gmssl$ git add Makefile sm2gmssl sm2gmssl.c sm2gmssl.o
fengtairui@fengtairui-virtual-machine:~/bestidiocs/ch03/sm2/sm2gmssl$ git commit -m "gmssl sm2"
[master d3912f3] gmssl sm2
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100755 ch03/sm2/sm2gmssl/sm2gmssl
fengtairui@fengtairui-virtual-machine:~/bestidiocs/ch03/sm2/sm2gmssl$ git log
commit d3912f354111545f6a3fd4337dc1da9cd36ac99a (HEAD -> master)
Author: fengtairui <1978274655@qq.com>
Date:   Sun Oct 20 10:23:37 2024 +0800

    gmssl sm2

(二)SM3的实践

fengtairui@fengtairui-virtual-machine:~/bestidiocs2024/ch03/sm3/sm3gmssl$ gcc -o testsm3 testsm3.c -L/桌面/GmSSL-master/include/gmssl -lgmssl
fengtairui@fengtairui-virtual-machine:~/bestidiocs2024/ch03/sm3/sm3gmssl$ ./testsm3
SM3 hash: 8b3145130a678ef0049952d0c3d78f878b3c825bd3e73a0fb2319b34cabea9e0
fengtairui@fengtairui-virtual-machine:~/bestidiocs2024/ch03/sm3/sm3gmssl$ git add testsm3.c testsm3
fengtairui@fengtairui-virtual-machine:~/bestidiocs2024/ch03/sm3/sm3gmssl$ git commit -m "gmssl sm3"
[master 812153a] gmssl sm3
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100755 ch03/sm3/sm3gmssl/testsm3
fengtairui@fengtairui-virtual-machine:~/bestidiocs2024/ch03/sm3/sm3gmssl$ git log
commit 812153a0f42b7a05da8e7af1d057ffff109fd05f (HEAD -> master)
Author: fengtairui <1978274655@qq.com>
Date:   Sun Oct 20 11:06:02 2024 +0800

    gmssl sm3

问题

fengtairui@fengtairui-virtual-machine:~/bestidiocs2024/ch03/sm3/sm3gmssl$ gcc -o testsm3 testsm3.c
/usr/bin/ld: /tmp/cc7SFvCK.o: in function `main':
testsm3.c:(.text+0x37): undefined reference to `sm3_init'
/usr/bin/ld: testsm3.c:(.text+0x62): undefined reference to `sm3_update'
/usr/bin/ld: testsm3.c:(.text+0x78): undefined reference to `sm3_finish'
collect2: error: ld returned 1 exit status

AI问答

这个错误信息表明你在编译 `testsm3.c` 文件时,链接器(ld)找不到 `sm3_init`、`sm3_update` 和 `sm3_finish` 这三个函数的定义。这通常是因为你没有正确地链接到包含这些函数定义的库。

SM3 是一种密码散列函数,通常需要一个库来实现这些功能。如果你已经有了一个实现了 SM3 算法的库,你需要确保在编译时链接到这个库。如果库是静态库(.a 文件),你可以使用 `-l` 选项来链接它。如果库是动态库(.so 文件),你可能还需要指定库的路径。

例如,如果你的库文件名为 `libcrypto.a` 或 `libcrypto.so`,并且它包含了 `sm3_init`、`sm3_update` 和 `sm3_finish` 这些函数,你可以这样编译你的程序:

```bash
gcc -o testsm3 testsm3.c -lcrypto
```

或者,如果库不在标准的库路径中,你可能需要使用 `-L` 选项来指定库文件的路径:

```bash
gcc -o testsm3 testsm3.c -L/path/to/library -lcrypto
```

如果 `sm3` 函数是某个特定库的一部分,那么你需要确保你有这个库,并且知道它的名称。如果这个库不是标准的,你可能需要下载或者构建它,然后按照上述方法链接。

如果你没有这个库,你需要找到提供 SM3 实现的库,或者自己实现这些函数。如果你使用的是某个特定的开发环境或框架,可能已经有现成的库可以使用。

解决问题实践

fengtairui@fengtairui-virtual-machine:~/bestidiocs2024/ch03/sm3/sm3gmssl$ gcc -o testsm3 testsm3.c -L/桌面/GmSSL-master/include/gmssl -lgmssl
fengtairui@fengtairui-virtual-machine:~/bestidiocs2024/ch03/sm3/sm3gmssl$ ./testsm3
SM3 hash: 8b3145130a678ef0049952d0c3d78f878b3c825bd3e73a0fb2319b34cabea9e0

(三)SM4的实践

fengtairui@fengtairui-virtual-machine:~/bestidiocs2024/ch03/sm4/sm4gmssl$ make
gcc   -Wall -O2 -I ~/GmSSL-3.1.1-Linux/include     -L ~/GmSSL-3.1.1-Linux/lib   -lgmssl   -c sm4gmssl.c -o sm4gmssl.o  
gcc   -o sm4gmssl sm4gmssl.o -L ~/GmSSL-3.1.1-Linux/lib   -lgmssl      
fengtairui@fengtairui-virtual-machine:~/bestidiocs2024/ch03/sm4/sm4gmssl$ ./sm4gmssl
随机生成的密钥: AE C9 25 6E 11 A4 7B E3 3A EA AE EA E5 37 D8 B8 
随机生成的IV: 14 9C 2B 27 23 43 56 C9 0A C2 83 D3 E0 C8 51 36 
明文 (130 字节): 06 93 9C 0A F7 F9 01 0D D2 79 FC 7D 17 87 D2 A9 0B F1 4E 43 E4 41 92 F0 F4 B1 89 42 CA 5F F5 7C DA CD 56 7E 64 70 39 40 E2 51 B8 46 57 35 B9 85 8B ED F4 F9 98 38 12 55 19 A8 A0 D0 3F 6A 50 0A 3B 98 0B 9D F4 1D BE 2D BA EA 5C 10 25 40 80 D0 57 C4 DC 28 64 11 AE 72 B7 6B 69 6E 9E 44 0E 53 6F 5C 24 E1 F6 AB 1A A5 78 D9 FF 7C BF F5 EB 16 0C 0E 1C 5C 04 C1 DC F2 94 86 6D 4F 6D 0B DF 21 A2 FC 
密文 (144 字节): 0B 4A 8F 5D DF 5F AA CB 59 21 02 59 19 18 FE 35 06 7D 0D 7D 84 B4 01 96 B0 DC 90 F7 A9 2E 2A 10 1E BB B5 3E 9F 1B 33 51 A7 FB 9A 0E 02 CE AE C5 58 52 03 24 60 91 18 EF 86 C6 D4 4C 86 5D 92 09 60 F3 80 5F A2 AA B7 AF 38 F4 B5 0E CC 1A F9 D9 B5 E0 42 3A C9 96 F4 32 EE A5 11 9F 88 08 65 49 E1 2E BC 41 A7 D9 F2 72 FA E2 22 99 E3 BF 44 29 B5 CB 3C 9E 9F E6 77 0C 0A C0 3B 1F 81 96 02 53 D7 80 DF 44 65 29 CB 99 0E 4C 1A 6E 64 14 08 51 
解密后的明文 (130 字节): 06 93 9C 0A F7 F9 01 0D D2 79 FC 7D 17 87 D2 A9 0B F1 4E 43 E4 41 92 F0 F4 B1 89 42 CA 5F F5 7C DA CD 56 7E 64 70 39 40 E2 51 B8 46 57 35 B9 85 8B ED F4 F9 98 38 12 55 19 A8 A0 D0 3F 6A 50 0A 3B 98 0B 9D F4 1D BE 2D BA EA 5C 10 25 40 80 D0 57 C4 DC 28 64 11 AE 72 B7 6B 69 6E 9E 44 0E 53 6F 5C 24 E1 F6 AB 1A A5 78 D9 FF 7C BF F5 EB 16 0C 0E 1C 5C 04 C1 DC F2 94 86 6D 4F 6D 0B DF 21 A2 FC 
解密验证成功:解密后的明文与原始明文一致。
fengtairui@fengtairui-virtual-machine:~/bestidiocs2024/ch03/sm4/sm4gmssl$ git add Makefile sm4gmssl sm4gmssl.c sm4gmssl.o
fengtairui@fengtairui-virtual-machine:~/bestidiocs2024/ch03/sm4/sm4gmssl$ git commit -m "gmssl sm4"
[master ae490d3] gmssl sm4
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100755 ch03/sm4/sm4gmssl/sm4gmssl
fengtairui@fengtairui-virtual-machine:~/bestidiocs2024/ch03/sm4/sm4gmssl$ git log
commit ae490d308ab84db1ef13118d8c6b181faf91dc2e (HEAD -> master)
Author: fengtairui <1978274655@qq.com>
Date:   Sun Oct 20 11:09:12 2024 +0800

    gmssl sm4

三、两人一组,在Ubuntu或openEuler中(推荐openEuler)中使用GmSSL编程实现带签名的数字信封协议。使用GmSSL库时,Bob发送,Alice接收。Ailice,Bob在实验中要替换为自己的8位学号+姓名。使用Markdown记录详细记录实践过程,每完成一项gitcommit一次。

(一)Alice,Bob生成自己的公私钥匙对,记作:(PKa,SKa),(PKb,SKb),Alice,Bob分别拥有:(PKa,SKa,PKb),(PKb,SKb,PKa),实验中把公钥文件拷贝给对方

Bob(20221320ftr)生成密钥对

fengtairui@fengtairui-virtual-machine:~/20221320fengtairui/sm2_sm3_sm4$ gcc -o miyao miyao.c -lgmssl
fengtairui@fengtairui-virtual-machine:~/20221320fengtairui/sm2_sm3_sm4$ ./miyao 20221320ftr_publickey.pem 20221320ftr_privatekey.pem
    SM2 公钥
        publicKey: 6A7E3C2B112BE7881DC8E4067D6610D86512F95F8ABCD92055517D5C8E186C66B52A15EF950E4D035517AAF327A6AE8E8BC3760733E9D80067A953446A9F0294
        privateKey: f4a6112b6a366437a9f77ca31dbfa52651d7b953fb033b586fb5c4ce5cd39165
fengtairui@fengtairui-virtual-machine:~/20221320fengtairui/sm2_sm3_sm4$ git add 20221320ftr_privatekey.pem 20221320ftr_publickey.pem
fengtairui@fengtairui-virtual-machine:~/20221320fengtairui/sm2_sm3_sm4$ git commit -m "20221320fengtairui private key and public key"
[master 0d09e46] 20221320fengtairui private key and public key
 2 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 20221320fengtairui/sm2_sm3_sm4/20221320ftr_privatekey.pem
 create mode 100644 20221320fengtairui/sm2_sm3_sm4/20221320ftr_publickey.pem
fengtairui@fengtairui-virtual-machine:~/20221320fengtairui/sm2_sm3_sm4$ git log
commit 0d09e4670641b907c03b7270aa1be05077548b86 (HEAD -> master)
Author: fengtairui <1978274655@qq.com>
Date:   Sun Oct 20 21:42:53 2024 +0800

    20221320fengtairui private key and public key

Alice(20221328msm)生成密钥对

liudaotongming@LAPTOP-J23VPJPH:~$ gcc -o miyao miyao.c -lgmssl
liudaotongming@LAPTOP-J23VPJPH:~$ ./miyao 20221328msm_publickey.pem 20221328msm_privatekey.pem
    SM2 公钥
        publicKey: 70B80F68A85B3450ADCDF74A2171FF5B4BB2F697F046D9E31ABA5F38CE17F5E44481FE847C41B524C399FC08FFB4CAA851CC5B9B31EFF7983B24DDFADE141703
        privateKey: ff6791c92e929812c8f2db8f41e04ce27ed8fb38b9daf53c3cc3ad257efcd7f8
liudaotongming@LAPTOP-J23VPJPH:~$ git add 20221328msm_publickey.pem 20221328msm_privatekey.pem
liudaotongming@LAPTOP-J23VPJPH:~$ git commit -m "20221328mashenming public key and private key"
[master 5fc5636] 20221320mashenming public key and private key
 2 files changed, 2 insertions(+)
 create mode 100644 20221320fengtairui/sm2_sm3_sm4/20221328msm_privatekey.pem
 create mode 100644 20221320fengtairui/sm2_sm3_sm4/20221328msm_publickey.pem
liudaotongming@LAPTOP-J23VPJPH:~$ git log
commit 5fc56361d96363906dff0036b7daec874c628c40 (HEAD -> master)
Author: 20221328马申明 <3254165494@qq.com>
Date:   Sun Oct 20 22:06:11 2024 +0800

    20221328mashenming public key and private key

(二)Bob发给Alice的明文plain.txt,内容为自己的姓名学号

fengtairui@fengtairui-virtual-machine:~/20221320fengtairui/sm2_sm3_sm4$ echo "20221320fengtairui" > plain.txt
fengtairui@fengtairui-virtual-machine:~/20221320fengtairui/sm2_sm3_sm4$ git add plain.txt
fengtairui@fengtairui-virtual-machine:~/20221320fengtairui/sm2_sm3_sm4$ git commit -m "20221320fengtairui plain text "
[master 01b4b4c] 20221320fengtairui plain text
 1 file changed, 1 insertion(+)
 create mode 100644 20221320fengtairui/sm2_sm3_sm4/plain.txt
fengtairui@fengtairui-virtual-machine:~/20221320fengtairui/sm2_sm3_sm4$ git log
commit 01b4b4cfc77b03695ce49c2f433be2ef95dd5b98 (HEAD -> master)
Author: fengtairui <1978274655@qq.com>
Date:   Sun Oct 20 21:45:13 2024 +0800

    20221320fengtairui plain text

(三)Bob:sm4key使用gmsslrand产生,16字节,记作k

fengtairui@fengtairui-virtual-machine:~/20221320fengtairui/sm2_sm3_sm4$ ./sm4miyao 20221320ftr_key.bin 20221320ftr_iv.bin
fengtairui@fengtairui-virtual-machine:~/20221320fengtairui/sm2_sm3_sm4$ git add 20221320ftr_iv.bin 20221320ftr_key.bin
fengtairui@fengtairui-virtual-machine:~/20221320fengtairui/sm2_sm3_sm4$ git commit -m "20221320fengtairui key and iv "
[master 2069372] 20221320fengtairui key and iv
 2 files changed, 2 insertions(+)
 create mode 100644 20221320fengtairui/sm2_sm3_sm4/20221320ftr_iv.bin
 create mode 100644 20221320fengtairui/sm2_sm3_sm4/20221320ftr_key.bin
fengtairui@fengtairui-virtual-machine:~/20221320fengtairui/sm2_sm3_sm4$ git log
commit 20693729f705de578b8eaa62e7bf5d560d3c7e41 (HEAD -> master)
Author: fengtairui <1978274655@qq.com>
Date:   Sun Oct 20 21:47:21 2024 +0800

    20221320fengtairui key and iv

(四)Bob:Sm4Enc(k,P)= C

fengtairui@fengtairui-virtual-machine:~/20221320fengtairui/sm2_sm3_sm4$ gcc -o sm4jm sm4jm.c -lgmssl
fengtairui@fengtairui-virtual-machine:~/20221320fengtairui/sm2_sm3_sm4$ ./sm4jm 20221320ftr_key.bin 20221320ftr_iv.bin plain.txt 20221320ftr_miwen.cbc
fengtairui@fengtairui-virtual-machine:~/20221320fengtairui/sm2_sm3_sm4$ git add 20221320ftr_miwen.cbc
fengtairui@fengtairui-virtual-machine:~/20221320fengtairui/sm2_sm3_sm4$ git commit -m "20221320fengtairui cipher text"
[master 9123fd2] 20221320fengtairui cipher text
 1 file changed, 1 insertion(+)
 create mode 100644 20221320fengtairui/sm2_sm3_sm4/20221320ftr_miwen.cbc
fengtairui@fengtairui-virtual-machine:~/20221320fengtairui/sm2_sm3_sm4$ git log
commit 9123fd2a5f1eed436722cf22166e30797873b474 (HEAD -> master)
Author: fengtairui <1978274655@qq.com>
Date:   Sun Oct 20 21:48:40 2024 +0800

    20221320fengtairui cipher text

(五)Bob:Sm2Enc(PKa,k)= KC

fengtairui@fengtairui-virtual-machine:~/20221320fengtairui/sm2_sm3_sm4$ gcc -o jiami jiami.c -lgmssl
fengtairui@fengtairui-virtual-machine:~/20221320fengtairui/sm2_sm3_sm4$ ./jiami 20221328msm_publickey.pem 20221320ftr_key.bin 20221320ftr_encryptkey.bin
明文: z��'�QI����
                 eQE
加密明文...
加密成功。
fengtairui@fengtairui-virtual-machine:~/20221320fengtairui/sm2_sm3_sm4$ ./jiami 20221328msm_publickey.pem 20221320ftr_iv.bin 20221320ftr_encryptiv.bin
v�f : s
   ��0���M�T
加密明文...
加密成功。
fengtairui@fengtairui-virtual-machine:~/20221320fengtairui/sm2_sm3_sm4$ git add 20221320ftr_encryptkey.bin 20221320ftr_encryptiv.bin
fengtairui@fengtairui-virtual-machine:~/20221320fengtairui/sm2_sm3_sm4$ git commit -m "20221320fengtairui encrypt key and iv"
[master f8f0582] 20221320fengtairui encrypt key and iv
 2 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 20221320fengtairui/sm2_sm3_sm4/20221320ftr_encryptiv.bin
 create mode 100644 20221320fengtairui/sm2_sm3_sm4/20221320ftr_encryptkey.bin
fengtairui@fengtairui-virtual-machine:~/20221320fengtairui/sm2_sm3_sm4$ git log
commit f8f0582f1c8560475ef27deaeb7e6b1e829157b4 (HEAD -> master)
Author: fengtairui <1978274655@qq.com>
Date:   Sun Oct 20 21:51:38 2024 +0800

    20221320fengtairui encrypt key and iv

(六)Bob:Sm2Sign(SKb,C)= S1

fengtairui@fengtairui-virtual-machine:~/20221320fengtairui/sm2_sm3_sm4$ gcc -o qianming qianming.c -lgmssl
fengtairui@fengtairui-virtual-machine:~/20221320fengtairui/sm2_sm3_sm4$ ./qianming 20221320ftr_privatekey.pem 20221320ftr_miwen.cbc 20221320ftr.sig
签名成功。
fengtairui@fengtairui-virtual-machine:~/20221320fengtairui/sm2_sm3_sm4$ git add 20221320ftr.sig
fengtairui@fengtairui-virtual-machine:~/20221320fengtairui/sm2_sm3_sm4$ git commit -m "20221320fengtairui signature"
[master 5e86a5c] 20221320fengtairui signature
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 20221320fengtairui/sm2_sm3_sm4/20221320ftr.sig
fengtairui@fengtairui-virtual-machine:~/20221320fengtairui/sm2_sm3_sm4$ git log
commit 5e86a5c1dff046e188665162dec167d95cf96402 (HEAD -> master)
Author: fengtairui <1978274655@qq.com>
Date:   Sun Oct 20 21:53:20 2024 +0800

    20221320fengtairui signature

(七)Bob:数字信封 C||KC||S1发给Alice

fengtairui@fengtairui-virtual-machine:~/20221320fengtairui/sm2_sm3_sm4$ git push
Username for 'https://gitee.com': 13696447027
Password for 'https://13696447027@gitee.com': 
枚举对象中: 35, 完成.
对象计数中: 100% (35/35), 完成.
使用 8 个线程进行压缩
压缩对象中: 100% (29/29), 完成.
写入对象中: 100% (33/33), 2.79 KiB | 158.00 KiB/s, 完成.
总共 33(差异 12),复用 0(差异 0),包复用 0
remote: Powered by GITEE.COM [1.1.5]
remote: Set trace flag 2c4d199f
To https://gitee.com/feng-tairui/information-security-design.git
   a5e2e4f..5e86a5c  master -> master

(八)Alice:Sm2Very(PKb,S1)

liudaotongming@LAPTOP-J23VPJPH:~$ gcc -o yanqian yanqian.c -lgmssl -lcrypto
liudaotongming@LAPTOP-J23VPJPH:~$ ./yanqian 20221320ftr_publickey.pem 20221320ftr_miwen.cbc 20221320ftr.sig
签名验证成功。

(九)Alice:Sm2Dec(SKa,KC)=k

liudaotongming@LAPTOP-J23VPJPH:~$ gcc -o jiemi jiemi.c -lgmssl
liudaotongming@LAPTOP-J23VPJPH:~$ ./jiemi 20221328msm_privatekey.pem 20221320ftr_encryptiv.bin 20221328msm_iv.bin
解密密文...
解密成功。
liudaotongming@LAPTOP-J23VPJPH:~$ ./jiemi 20221328msm_privatekey.pem 20221320ftr_encryptkey.bin 20221328msm_key.bin
解密密文...
解密成功。
liudaotongming@LAPTOP-J23VPJPH:~$ git add 20221328msm_key.bin 20221328msm_iv.bin
liudaotongming@LAPTOP-J23VPJPH:~$ git commit -m "20221328mashenming key and iv"
[master d5051ff] 20221328mashenming key and iv
 2 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 20221320fengtairui/sm2_sm3_sm4/20221328msm_iv.bin
 create mode 100644 20221320fengtairui/sm2_sm3_sm4/20221328msm_key.bin
liudaotongming@LAPTOP-J23VPJPH:~$ git log
commit d5051ff1f5bfdb6b0c21d59b5c8b4c2ca9a2bf97 (HEAD -> master)
Author: 20221328马申明 <3254165494@qq.com>
Date:   Sun Oct 20 21:57:35 2024 +0800

    20221328mashenming key and iv

(十)Alice:Sm4Dec(k,C)= P

liudaotongming@LAPTOP-J23VPJPH:~$ gcc -o sm4jie sm4jie.c -lgmssl
liudaotongming@LAPTOP-J23VPJPH:~$ ./sm4jie 20221328msm_key.bin 20221328msm_iv.bin 20221320ftr_miwen.cbc plain_2.txt
liudaotongming@LAPTOP-J23VPJPH:~$ cat plain_2.txt
20221320fengtairui
liudaotongming@LAPTOP-J23VPJPH:~$ git add plain_2.txt
liudaotongming@LAPTOP-J23VPJPH:~$ git commit -m "20221328mashenming decrypt"
[master 133794b] 20221328mashenming decrypt
 1 file changed, 1 insertion(+)
 create mode 100644 20221320fengtairui/sm2_sm3_sm4/plain_2.txt
liudaotongming@LAPTOP-J23VPJPH:~$ git log
commit 133794b41da6eeaabce81a504ed4e8596f1384ee (HEAD -> master)
Author: 20221328马申明 <3254165494@qq.com>
Date:   Sun Oct 20 21:59:59 2024 +0800

    20221328mashenming decrypt
posted @ 2025-01-16 17:01  20221320冯泰瑞  阅读(88)  评论(0)    收藏  举报