欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在Linux中使用MD5實(shí)現(xiàn)用戶驗(yàn)證的解決方法

 更新時(shí)間:2013年04月19日 09:30:56   作者:  
本篇文章小編為大家介紹,在Linux中使用MD5實(shí)現(xiàn)用戶驗(yàn)證的解決方法。需要的朋友參考下

使用openssl中的MD5函數(shù),該函數(shù)返回16字節(jié)的unsigned char類型的數(shù)據(jù),每個(gè)字節(jié)的范圍都在0~255間,把

它格式化為十六進(jìn)制就是32位md5編碼。注:一個(gè)字節(jié)為8位,正好可以表示2位的十六進(jìn)制。

使用登錄客戶端的用戶名從Redis數(shù)據(jù)庫中得到salt值和加密后的密碼,然后把登錄客戶端的密碼經(jīng)過salt加密后,與

Redis數(shù)據(jù)庫中的密碼進(jìn)行比較。相同則驗(yàn)證通過,否則驗(yàn)證失敗。

Redis數(shù)據(jù)庫中密碼的存儲格式為password:salt

用戶驗(yàn)證算法如下:

  int user_authenticate(char *username, char *password)

  {

    char *salt_pw, *salt, *pw;

    char buf[40];

    char tmp[3]={'\0'}, md5_str[33]={'\0'};

    unsigned char md[16];

    int i;

    //get_salt_pw調(diào)用Redis數(shù)據(jù)庫獲得password:salt

    salt_pw = get_salt_pw(db, username);

    pw = strtok(salt_pw, ":");

    if(!pw){

      return 0;

    }

    salt = strtok(NULL, ":");

    if(!salt){

      return 0;

    }

    strcpy(buf, password);

    strcat(buf, salt);

    MD5((const unsigned char*)buf, strlen(buf), md);

    //transform to md5 string

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

      sprintf(tmp, "%02x", md[i]);

      strcat(md5_str, tmp);

    }

    //compare encode password using md5

    if(strcmp((char*)md5_str, pw)){

      return 0;

    }

    return 1;

  }

其中要注意strtok函數(shù)的使用,以及16字節(jié)的unsigned char轉(zhuǎn)換為32位十六進(jìn)制數(shù)的過程。

相關(guān)文章

  • linux系統(tǒng)安裝msf的過程詳解

    linux系統(tǒng)安裝msf的過程詳解

    這篇文章主要介紹了linux系統(tǒng)安裝msf的過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Linux(ubuntu)下實(shí)現(xiàn)增加/刪除文件權(quán)限

    Linux(ubuntu)下實(shí)現(xiàn)增加/刪除文件權(quán)限

    下面小編就為大家分享一篇Linux(ubuntu)下實(shí)現(xiàn)增加/刪除文件權(quán)限,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Apache、Nginx下Font Awesome在 Firefox 中不顯示問題解決方法

    Apache、Nginx下Font Awesome在 Firefox 中不顯示問題解決方法

    這篇文章主要介紹了Apache、Nginx下Font Awesome在 Firefox 中不顯示問題解決方法,在配置中增加一個(gè)響應(yīng)頭即可解決這個(gè)問題,需要的朋友可以參考下
    2014-07-07
  • Linux中g(shù)it用https連接時(shí)不用每次輸入密碼的方法

    Linux中g(shù)it用https連接時(shí)不用每次輸入密碼的方法

    這篇文章主要給大家介紹了關(guān)于Linux中g(shù)it使用https連接時(shí)不用每次輸入密碼的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • Apache Spark 2.0 在作業(yè)完成時(shí)卻花費(fèi)很長時(shí)間結(jié)束

    Apache Spark 2.0 在作業(yè)完成時(shí)卻花費(fèi)很長時(shí)間結(jié)束

    大家在使用 Apache Spark 2.x 的時(shí)候可能會遇到這種現(xiàn)象:雖然我們的 Spark Jobs 已經(jīng)全部完成了,但是我們的程序卻還在執(zhí)行。怎么回事呢?下面小編通過實(shí)例代碼給大家介紹下
    2019-06-06
  • Linux硬盤合并的實(shí)現(xiàn)代碼

    Linux硬盤合并的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Linux硬盤合并的實(shí)現(xiàn)代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • foreman ubuntu16 快速安裝

    foreman ubuntu16 快速安裝

    foreman ubuntu16快速安裝,非常實(shí)用的方法,小編覺得很不錯(cuò),分享給大家,希望對大家有幫助
    2018-09-09
  • Linux一鍵安裝xdd plus機(jī)器人

    Linux一鍵安裝xdd plus機(jī)器人

    大家好,本篇文章主要講的是Linux一鍵安裝xdd plus機(jī)器人,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • Centos7.4環(huán)境安裝lamp-php7.0教程

    Centos7.4環(huán)境安裝lamp-php7.0教程

    這篇文章主要介紹了Centos7.4環(huán)境安裝lamp-php7.0,較為詳細(xì)的分析了CentOS7.4環(huán)境下Apache、mysql、php7.0及phpmyadmin等安裝命令與操作注意事項(xiàng),需要的朋友可以參考下
    2019-03-03
  • 寶塔多個(gè)版本PHP切換默認(rèn)PHP版本

    寶塔多個(gè)版本PHP切換默認(rèn)PHP版本

    這篇文章主要介紹了寶塔多個(gè)版本PHP切換默認(rèn)PHP版本的方法,需要的朋友可以參考下
    2023-08-08

最新評論