Linux下C語言使用openssl庫進行加密

2021-09-06 17:22:12 字數 2832 閱讀 1883

在這裡插一小節加密的吧,使用openssl庫進行加密。

使用md5加密

我們以乙個字串為例,新建乙個檔案filename.txt,在檔案內寫入hello ,然後在linux下可以使用命令md5sum filename.txt計算md5值 ==> b1946ac92492d2347c6235b4d2611184  。雖然寫入的是hello這5個字元,但是我們使用命令xxd filename.txt後可以看出檔案結尾處會有個0x0a這個回車符。所以在下面的**中才會有\n。

1

//開啟/usr/include/openssl/md5.h這個檔案我們可以看到一些函式2//

初始化 md5 contex, 成功返回1,失敗返回0

3int md5_init(md5_ctx *c);4//

迴圈呼叫此函式,可以將不同的資料加在一起計算md5,成功返回1,失敗返回0

5int md5_update(md5_ctx *c, const

void *data, size_t len);6//

輸出md5結果資料,成功返回1,失敗返回0

7int md5_final(unsigned char *md, md5_ctx *c);8//

md5_init,md5_update,md5_final三個函式的組合,直接計算出md5的值

9 unsigned char *md5(const unsigned char *d, size_t n, unsigned char *md);

10//

內部函式,不需要呼叫

11void md5_transform(md5_ctx *c, const unsigned char *b);

新建乙個cpp檔案用於計算md5值

1 #include 2 #include 

3 #include 4

5int

main()

620 printf("\n"

);21

return0;

22 }

編譯選項為: g++ md5test.cpp -lssl -o md5test

執行後的結果為: b1946ac92492d2347c6235b4d2611184

注意這裡用到openssl庫,可以執行 yum install openssl  和 yum install openssl-devel 進行安裝。

下面這個**是對檔案進行md5計算。

1 #include 2 #include 

3 #include 4

5int

main()625

26 md5_init(&ctx);

27while((len=fread(buffer,1,1024,fp))>0)28

32 md5_final(ou***,&ctx);

3334

for(i=0;i<16;i)

3538 printf("\n"

);39

return0;

40 }

執行得到結果後,我們可以使用md5sum命令進行驗證。

使用sha1加密

openssl裡幾個函式講解

1

//sha1演算法是對md5演算法的公升級,計算結果為20位元組(160位),使用方法如下:2//

開啟/usr/include/openssl/sha.h這個檔案我們可以看到一些函式3//

初始化 sha contex, 成功返回1,失敗返回0

4int sha_init(sha_ctx *c);5//

迴圈呼叫此函式,可以將不同的資料加在一起計算sha1,成功返回1,失敗返回0

6int sha_update(sha_ctx *c, const

void *data, size_t len);7//

輸出sha1結果資料,成功返回1,失敗返回0

8int sha_final(unsigned char *md, sha_ctx *c);9//

sha_init,sha_update,sha_final三個函式的組合,直接計算出sha1的值

10 unsigned char *sha(const unsigned char *d, size_t n, unsigned char *md);

11//

內部函式,不需要呼叫

12void sha_transform(sha_ctx *c, const unsigned char *data);

1314

//上面的sha可以改為sha1,sha224,sha256,sha384,sha512就可以實現多種加密了

我們對上面的程式進行修改

1 #include 2 #include 

3 #include 4

5int

main()625

26 sha1_init(&stx);

27while((len=fread(buffer,1,1024,fp))>0)28

32 sha1_final(ou***,&stx);

3334

for(i=0;i<20;i)

3538 printf("\n"

);39

return0;

40 }

md5有128bit(16個char)*sha1有160bit(20個char)*sha256有256bit(32個char)*sha244有244bit(28個char)*sha512有512bit(64個char).所以要注意修改大小哦:-o

LINUX下OPEN函式簡介

open 函式用於開啟和建立檔案。以下是 open 函式的簡單描述 fcntl.h int open const char pathname,int oflag,mode t mode 返回值 成功則返回檔案描述符,否則返回 1 對於 open 函式來說,第三個引數 僅當建立新檔案時才使用,用於指定...

Linux中C語言open和fopen相關旗標

函式原型 int open const char pathname,int flags int open const char pathname,int flags,mode t mode 作用 以各種方式開啟檔案 返回值 返回開啟的檔案控制代碼,1 開啟失敗 函式說明引數pathname 指向欲開...

C語言中open函式

簡述 include int open const char pathname,int oflag,mode t mode 返回值 成功則返回 檔案描述符 否則返回 1 對於 open 函式來說,第三個引數 僅當建立新檔案時 即 使用了o creat 時 才使用,用於指定檔案的訪問許可權位 acce...