在這裡插一小節加密的吧,使用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 #include3 #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 #include3 #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 #include3 #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...