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