亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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

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

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

用戶驗證算法如下:

  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位十六進制數(shù)的過程。

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

    foreman ubuntu16 快速安裝

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

    Linux一鍵安裝xdd plus機器人

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

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

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

    寶塔多個版本PHP切換默認PHP版本

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

最新評論