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

2022-04-03 04:44:20 字數 3489 閱讀 4795

c#中常涉及到對使用者密碼的加密於解密的演算法,其中使用md5加密是最常見的的實現方式。本文總結了通用的演算法並結合了自己的一點小經驗,分享給大家。

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

1)16位的md5加密

/// ///16位md5加密

///

///

///

public static string md5encrypt16(stringpassword)

2)32位的md5加密

/// ///32位md5加密

///

///

///

public static string md5encrypt32(stringpassword)

returnpwd;

}

3)64位的md5加密

public static string md5encrypt64(stringpassword)

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

/// ///加密使用者密碼

///

/// 密碼

/// 加密位數

/// 加密密碼

public static string md5(string password, intcodelength)

//32位加密

if (codelength == 32)

}return string.empty;

}

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

/// ///登陸

///

public model.userinfo userlogon(string userid, string pwd, out stringstatuscode)

else

}else

returnmodel;

}

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

/// ///des資料加密

///

/// 目標值

/// 金鑰

/// 加密值

public static string encrypt(string targetvalue, stringkey)

var returnvalue = newstringbuilder();

var des = newdescryptoserviceprovider();

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 = newmemorystream();

var cs = newcryptostream(ms, des.createencryptor(), cryptostreammode.write);

cs.write(inputbytearray, 0, inputbytearray.length);

cs.flushfinalblock();

foreach (byte b inms.toarray())

returnreturnvalue.tostring();

}

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

/// ///des資料解密

///

///

///

///

public static string decrypt(string targetvalue, stringkey)

//定義des加密物件

var des = newdescryptoserviceprovider();

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 = newmemorystream();

//定義加密流

var cs = newcryptostream(ms, des.createdecryptor(), cryptostreammode.write);

cs.write(inputbytearray, 0, inputbytearray.length);

cs.flushfinalblock();

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

}

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

原文 c 使用md5對使用者密碼加密與解密 一.使用16位 32位 64位md5方法對使用者名稱加密 1 16位的md5加密 16位md5加密 public static string md5encrypt16 string password 2 32位的md5加密 32位md5加密 public ...

基於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...