C 使用MD5對使用者密碼加密與解密

2021-09-07 19:08:36 字數 3943 閱讀 7782

原文:

c#:使用md5對使用者密碼加密與解密

一.使用16位、32位、64位md5方法對使用者名稱加密

1)16位的md5加密

///

///16位md5加密

//////

///public

static

string md5encrypt16(string

password)

2)32位的md5加密

///

///32位md5加密

//////

///public

static

string md5encrypt32(string

password)

return

pwd;

}

3)64位的md5加密

public

static

string md5encrypt64(string

password)

4)使用md5為使用者密碼加密

///

///加密使用者密碼

//////

密碼///

加密位數

///加密密碼

public

static

string md5(string password, int

codelength)

//32位加密

if (codelength == 32

)

}return

string

.empty;

}

由於md5是不可逆的,所以加密之後就無法解密,取使用者名稱和密碼時候,需要再加密一邊使用者輸入的資料與資料庫中已加密的資料進行比對。如果比對結果一致,則可以判定登陸成功!**如下所示:

///

///登陸

///public model.userinfo userlogon(string userid, string pwd, out

string

statuscode)

else

}else

return

model;

}

5)通過descryptoserviceprovider物件對字串進行加密解密

///

///des資料加密

//////

目標值///

金鑰///

加密值public

static

string encrypt(string targetvalue, string

key)

var returnvalue = new

stringbuilder();

var des = new

descryptoserviceprovider();

byte inputbytearray =encoding.default.getbytes(targetvalue);

//通過兩次雜湊密碼設定對稱演算法的初始化向量

des.key =encoding.ascii.getbytes(formsauthentication.hashpasswordforstoringinconfigfile

(formsauthentication.hashpasswordforstoringinconfigfile(key,

"md5").

substring(

0, 8), "

sha1

").substring(0, 8

));

//通過兩次雜湊密碼設定演算法的機密金鑰

des.iv =encoding.ascii.getbytes(formsauthentication.hashpasswordforstoringinconfigfile

(formsauthentication.hashpasswordforstoringinconfigfile(key,

"md5")

.substring(

0, 8), "

md5").substring(0, 8

));

var ms = new

memorystream();

var cs = new

cryptostream(ms, des.createencryptor(), cryptostreammode.write);

cs.write(inputbytearray,

0, inputbytearray.length);

cs.flushfinalblock();

foreach (byte b in

ms.toarray())

", b);

}return

returnvalue.tostring();

}

此種演算法可以通過加密金鑰進行解密,解密方法如下:

///

///des資料解密

//////

//////

public

static

string decrypt(string targetvalue, string

key)

//定義des加密物件

var des = new

descryptoserviceprovider();

int len = targetvalue.length / 2

;

var inputbytearray = new

byte

[len];

intx, i;

for (x = 0; x < len; x++)

//通過兩次雜湊密碼設定對稱演算法的初始化向量

des.key =encoding.ascii.getbytes(formsauthentication.hashpasswordforstoringinconfigfile

(formsauthentication.hashpasswordforstoringinconfigfile(key,

"md5").

substring(

0, 8), "

sha1

").substring(0, 8

));

//通過兩次雜湊密碼設定演算法的機密金鑰

des.iv =encoding.ascii.getbytes(formsauthentication.hashpasswordforstoringinconfigfile

(formsauthentication.hashpasswordforstoringinconfigfile(key,

"md5")

.substring(

0, 8), "

md5").substring(0, 8

));

//定義記憶體流

var ms = new

memorystream();

//定義加密流

var cs = new

cryptostream(ms, des.createdecryptor(), cryptostreammode.write);

cs.write(inputbytearray,

0, inputbytearray.length);

cs.flushfinalblock();

return

encoding.default.getstring(ms.toarray());

}

轉 C 使用MD5對使用者密碼加密與解密

c 中常涉及到對使用者密碼的加密於解密的演算法,其中使用md5加密是最常見的的實現方式。本文總結了通用的演算法並結合了自己的一點小經驗,分享給大家。一.使用16位 32位 64位md5方法對使用者名稱加密 1 16位的md5加密 16位md5加密 public static string md5en...

基於C 對使用者密碼使用MD5加密與解密

一.使用16位 32位 64位md5方法對使用者名稱加密 1 16位的md5加密 16位md5加密 public static string md5encrypt16 string password 2 32位的md5加密 32位md5加密 public static string md5encry...

註冊使用者時,使用MD5對密碼進行加密

當進行使用者註冊時,可以使用md5演算法對密碼進行加密,保證資料的安全性 package com.xhz.utils public class md5code private long state newlong 4 state abcd private long count newlong 2 n...