java asp 加密_asp.net 密码加密服务

本文介绍了一个用于密码加密和验证的服务工具类,通过随机选择的哈希算法和自动生成的盐值来增强密码的安全性。提供了获取加密文本和比较原始文本与加密文本的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下载类库    Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.dll

Microsoft.Practices.EnterpriseLibrary.Security.dll

Microsoft.Practices.EnterpriseLibrary.Common

2. web.config 配置

3.添加引用  类库

4.类  方法

///

/// 哈希加密算法枚举

///

public enum EnumHashProvider

{

///

/// MD5

///

MD5CryptoServiceProvider = 1,

///

/// RIPEMD160Managed

///

RIPEMD160Managed,

///

/// SHA1

///

SHA1CryptoServiceProvider,

///

/// SHA1Managed

///

SHA1Managed,

///

/// SHA256Managed

///

SHA256Managed,

///

/// SHA384Managed

///

SHA384Managed,

///

/// SHA512Managed

///

SHA512Managed

}

///

/// 加密服务工具类

///

public class CryptographyUtil

{

///

/// 根据随机抽取的加密算法和随机产生的散列字符串对源字符串进行加密

///

/// 要加密的字符串

/// 散列字符串

/// 哈希加密算法提供器

/// 加密后的字符串

public static string GetEncryptedHashText(string plainText, out string saltText, out int hashProvider)

{

Random radom = new Random();

int hashProviderType = radom.Next(1, 8);

hashProvider = hashProviderType;

saltText = CreateSaltText();

plainText += saltText;

string encryptedText = Cryptographer.CreateHash(((EnumHashProvider)hashProvider).ToString(), plainText);

return encryptedText;

}

///

/// 比较某一字符串是否是某一加密字符串的源字符串

///

/// 源字符串

/// 加密后的字符串

/// 加密用的散列值

/// 哈希加密算法提供器

/// true=源字符串和加密后的字符串一样;false=源字符串和加密后的字符串不一样

public static bool CompareHashText(string plainText, string encryptedText, string saltText, int hashProviderType)

{

EnumHashProvider hashProvider = new EnumHashProvider();

try

{

hashProvider = (EnumHashProvider)hashProviderType;

}

catch

{

return false;

}

bool matched = Cryptographer.CompareHash(hashProvider.ToString(), plainText + saltText, encryptedText);

return matched;

}

///

/// 产生一个散列值

///

///

private static string CreateSaltText()

{

byte[] bytSalt = new byte[32];

RNGCryptoServiceProvider rng;

rng = new RNGCryptoServiceProvider();

rng.GetBytes(bytSalt);

return Convert.ToBase64String(bytSalt);

}

}

///

/// 用户名登录

///

/// 用户名

/// 用户密码

/// 用户信息实体

public tb_User UserLogin(string userLoginname, string userLogPassword)

{

tb_User dbclass = this.repository.UserLogin(userLoginname);

if (dbclass == null)

{

return null;

}

if (!CryptographyUtil.CompareHashText(userLogPassword, dbclass.User_Password, dbclass.User_PasswordSalt, dbclass.User_PasswordFormat.Value))

{

return null;

}

return dbclass;

}

string user_Password;

string user_PasswordSalt;

int user_PasswordFormat;

//密码加密

user_Password = CryptographyUtil.GetEncryptedHashText(password, out user_PasswordSalt, out user_PasswordFormat);

item.User_Password = user_Password;

item.User_PasswordFormat = user_PasswordFormat;

item.User_PasswordSalt = user_PasswordSalt;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值