最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在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ù)庫(kù)中得到salt值和加密后的密碼,然后把登錄客戶端的密碼經(jīng)過salt加密后,與

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

Redis數(shù)據(jù)庫(kù)中密碼的存儲(chǔ)格式為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ù)庫(kù)獲得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)文章

最新評(píng)論

台中县| 友谊县| 南开区| 阿图什市| 龙川县| 肃宁县| 翼城县| 顺昌县| 东丽区| 抚顺市| 韶关市| 祁门县| 射洪县| 宣武区| 东山县| 沅陵县| 蒲城县| 汝阳县| 阳山县| 三亚市| 都兰县| 东辽县| 苍梧县| 延长县| 凤城市| 志丹县| 台东县| 香格里拉县| 麦盖提县| 崇州市| 天等县| 盐城市| 吴江市| 乐昌市| 孝义市| 大同市| 宜章县| 团风县| 敖汉旗| 江永县| 什邡市|