-
在openEuler(推薦)或Ubuntu或Windows(不推薦)中完成下面任務
-
使用OpenSSL的命令計算你的8位學號(數字)的摘要值(SM3),提交截圖(5')
-
使用OpenSSL程式設計對計算"你的8位學號(數字)"SM3摘要值,提交程式碼和執行結果截圖。(10’)
-
使用OpenSSL程式設計對計算內容為"所有同學的8位學號(文字)"的檔案的SM3摘要值,提交程式碼和執行結果截圖。(選做(10’))
2.程式碼:
include <stdio.h>
include <openssl/evp.h>
include <openssl/sm3.h>
include <string.h>
int main() {
// 要計算摘要的資料
unsigned char data[] = "20211125";
unsigned char md[SM3_DIGEST_LENGTH]; // 用於儲存摘要的陣列
unsigned int md_len; // 摘要的長度
// 建立摘要上下文
EVP_MD_CTX* mdctx = EVP_MD_CTX_new();
// 初始化摘要計算(指定SM3演算法)
EVP_DigestInit_ex(mdctx, EVP_sm3(), NULL);
// 提供資料
EVP_DigestUpdate(mdctx, data, strlen((char *)data));
// 獲取計算的摘要
EVP_DigestFinal_ex(mdctx, md, &md_len);
// 清理上下文
EVP_MD_CTX_free(mdctx);
printf("SM3 Digest: ");
for(unsigned int i = 0; i < md_len; i++) {
printf("%02x", md[i]);
}
printf("\n");
return 0;
}