linux中使用md5實現使用者驗證
使用openssl中的md5函式,該函式返回16位元組的unsigned char型別的資料,每個位元組的範圍都在0~255間,把
它格式化為十六進製制就是32位md5編碼。注:乙個位元組為8位,正好可以表示2位的十六進製制。
使用登入客戶端的使用者名稱從redis資料庫中得到salt值和加密後的密碼,然後把登入客戶端的密碼經過salt加密後,與
redis資料庫中的密碼進行比較。相同則驗證通過,否則驗證失敗。
redis資料庫中密碼的儲存格式為password:salt
使用者驗證演算法如下:
int user_authenticate(char *username, char *password)
, md5_str[33]=;
unsigned char md[16];
int i;
//get_salt_pw呼叫redis資料庫獲得password:salt
salt_pw = get_salt_pw(db, username);
pw = strtok(salt_pw, ":");
if(!pw)
salt = strtok(null, ":");
if(!salt)
strcpy(buf, password);
strcat(buf, salt);
md5((const unsigned char*)buf, strlen(buf), md);
//transform to md5 string
for(i = 0; i < 16; i++)
//compare encode password using md5
if(strcmp((char*)md5_str, pw))
return 1;
}其中要注意strtok函式的使用,以及16位元組的unsigned char轉換為32位十六進製制數的過程。
MD5加密與解密
using system using system.collections.generic using system.linq using system.text using system.security.cryptography using system.io namespace encrypt...
加密方法 MD5加密
一.md5加密演算法 1.1 md5演算法的定義 md5是雜湊雜湊演算法,對於md5而言,有兩個特性是很重要的,第一 明文資料經過雜湊以後的值是定長的 第二 是任意一段明文資料,經過雜湊以後,其結果必須永遠是不變的。前者的意思是可能存在有兩段明文雜湊以後得到相同的結果。md5是雜湊雜湊演算法,對於m...
檔案md5加密
計算檔案的 md5 值 要計算 md5 值的檔名和路徑 md5 值16進製制字串 public static string md5file string filename 計算檔案的雜湊值 要計算雜湊值的檔名和路徑 演算法 sha1,md5 雜湊值16進製制字串 public static stri...