OpenSSL測試-SM3

20211125mjz發表於2024-04-08
  1. 在openEuler(推薦)或Ubuntu或Windows(不推薦)中完成下面任務

  2. 使用OpenSSL的命令計算你的8位學號(數字)的摘要值(SM3),提交截圖(5')

  3. 使用OpenSSL程式設計對計算"你的8位學號(數字)"SM3摘要值,提交程式碼和執行結果截圖。(10’)

  4. 使用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;

}

相關文章