MD5密码加密
using System;
using System.Security.Cryptography;
using System.Text; namespace DimoNetwork.Common.DEncrypt
{
public enum MD5ResultMode : byte
{
Strong = ,
Weak =
} /// <summary>
/// 在应用程序中定义用于单向加密文本的方法
/// </summary>
public class TextEncrypt
{
private TextEncrypt()
{
} #region ========加密======== /// <summary>
/// 加密
/// </summary>
/// <param name="Text"></param>
/// <returns></returns>
public static string Encrypt(string Text)
{
return Encrypt(Text, "DimoNet");
}
/// <summary>
/// 加密数据
/// </summary>
/// <param name="Text"></param>
/// <param name="sKey"></param>
/// <returns></returns>
public static string Encrypt(string Text, string sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] inputByteArray;
inputByteArray = Encoding.Default.GetBytes(Text);
des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(, ));
des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(, ));
System.IO.MemoryStream ms = new System.IO.MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, , inputByteArray.Length);
cs.FlushFinalBlock();
StringBuilder ret = new StringBuilder();
foreach (byte b in ms.ToArray())
{
ret.AppendFormat("{0:X2}", b);
}
return ret.ToString();
} /// <summary>
/// MD5 加密
/// </summary>
/// <param name="password">要加密的字符串</param>
/// <returns></returns>
public static string MD5EncryptPassword(string password, int? length = null)
{
if (password == null)
{
throw new ArgumentNullException("password");
}
return MD5EncryptPassword(password, MD5ResultMode.Strong, length);
} /// <summary>
/// MD5 加密
/// </summary>
/// <param name="password">要加密的字符串</param>
/// <param name="mode">加密强度</param>
/// <returns></returns>
public static string MD5EncryptPassword(string password, MD5ResultMode mode, int? length = null)
{
if (password == null)
{
throw new ArgumentNullException("password");
}
MD5CryptoServiceProvider provider = new MD5CryptoServiceProvider();
string str = BitConverter.ToString(provider.ComputeHash(Encoding.UTF8.GetBytes(password)));
if (length != null && length == )
{
str = BitConverter.ToString(provider.ComputeHash(Encoding.UTF8.GetBytes(password)), , );
}
provider.Clear();
if (mode != MD5ResultMode.Strong)
{
return str.Replace("-", null).Substring(, 0x10);
}
return str.Replace("-", null);
} #endregion #region ========解密======== /// <summary>
/// 解密
/// </summary>
/// <param name="Text"></param>
/// <returns></returns>
public static string Decrypt(string Text)
{
return Decrypt(Text, "DimoNet");
}
/// <summary>
/// 解密数据
/// </summary>
/// <param name="Text"></param>
/// <param name="sKey"></param>
/// <returns></returns>
public static string Decrypt(string Text, string sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
int len;
len = Text.Length / ;
byte[] inputByteArray = new byte[len];
int x, i;
for (x = ; x < len; x++)
{
// i = Convert.ToInt32(Text.Substring(x * 2, 2), 16);
i = System.Convert.ToInt32(Text.Substring(x * , ), );
inputByteArray[x] = (byte)i;
}
des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(, ));
des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(, ));
System.IO.MemoryStream ms = new System.IO.MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, , inputByteArray.Length);
cs.FlushFinalBlock();
return Encoding.Default.GetString(ms.ToArray());
} #endregion /// <summary>
/// Base64 解码
/// </summary>
/// <param name="message"></param>
/// <returns></returns>
public static string Base64Decode(string message)
{
byte[] bytes = Convert.FromBase64String(message);
return Encoding.UTF8.GetString(bytes);
}
/// <summary>
/// Base64 编码
/// </summary>
/// <param name="message"></param>
/// <returns></returns>
public static string Base64Encode(string message)
{
return Convert.ToBase64String(Encoding.UTF8.GetBytes(message));
}
/// <summary>
/// DSA 加密
/// </summary>
/// <param name="password">要加密的字符串</param>
/// <returns></returns>
public static string DSAEncryptPassword(string password)
{
if (password == null)
{
throw new ArgumentNullException("password");
}
DSACryptoServiceProvider provider = new DSACryptoServiceProvider();
string str = BitConverter.ToString(provider.SignData(Encoding.UTF8.GetBytes(password)));
provider.Clear();
return str.Replace("-", null);
}
/// <summary>
/// MD5 加密
/// </summary>
/// <param name="password">要加密的字符串</param>
/// <returns></returns>
public static string EncryptPassword(string password)
{
if (password == null)
{
throw new ArgumentNullException("password");
}
return MD5EncryptPassword(password);
}
/// <summary>
/// MD5 加密
/// </summary>
/// <param name="password">要加密的字符串</param>
/// <returns></returns>
public static string MD5EncryptPassword(string password)
{
if (password == null)
{
throw new ArgumentNullException("password");
}
return MD5EncryptPassword(password, MD5ResultMode.Strong);
}
/// <summary>
/// MD5 加密
/// </summary>
/// <param name="password">要加密的字符串</param>
/// <param name="mode">加密强度</param>
/// <returns></returns>
public static string MD5EncryptPassword(string password, MD5ResultMode mode)
{
if (password == null)
{
throw new ArgumentNullException("password");
}
MD5CryptoServiceProvider provider = new MD5CryptoServiceProvider();
string str = BitConverter.ToString(provider.ComputeHash(Encoding.UTF8.GetBytes(password)));
provider.Clear();
if (mode != MD5ResultMode.Strong)
{
return str.Replace("-", null).Substring(, 0x10);
}
return str.Replace("-", null);
}
/// <summary>
/// SHA1 加密
/// </summary>
/// <param name="password">要加密的字符串</param>
/// <returns></returns>
public static string SHA1EncryptPassword(string password)
{
if (password == null)
{
throw new ArgumentNullException("password");
}
SHA1CryptoServiceProvider provider = new SHA1CryptoServiceProvider();
string str = BitConverter.ToString(provider.ComputeHash(Encoding.UTF8.GetBytes(password)));
provider.Clear();
return str.Replace("-", null);
}
/// <summary>
/// SHA256 加密
/// </summary>
/// <param name="password">要加密的字符串</param>
/// <returns></returns>
public static string SHA256(string password)
{
byte[] bytes = Encoding.UTF8.GetBytes(password);
SHA256Managed managed = new SHA256Managed();
return Convert.ToBase64String(managed.ComputeHash(bytes));
}
}
}
MD5密码加密的更多相关文章
- 使用okHttp登录、Md5密码加密
1.使用okHttp3登录 2.Md5密码加密 3.完整代码 4.项目案例 使用okHttp3登录: 使用okHttp3之前要在build.gradle引入okHttp3的依赖(顺便引入解析数据的gs ...
- Apach Shiro MD5密码加密过程(明文生成密码过程)详细解析
前言: 最近再项目当中使用的ApachShiro安全框架,对于权限和服务器资源的保护都有一个很好的管理.前期主要参考的文章有 项目中设计密码的加盐处理以及二次加密问题,跟着断点 一步步揭开Apach ...
- Django -MD5密码加密与登录
直接贴代码 login_reg.py from django.shortcuts import render, redirect from web.forms.login_reg import Reg ...
- 015 Android md5密码加密及其工具类
1.md5加密介绍 MD5算法是广泛使用的杂凑函数,也就是哈希函数,英文全拼是:Message Digest Algorithm,对应的中文名字是消息摘要算法. MD5加密:将字符串转换成 32位的字 ...
- 添加MD5 密码加密
编辑 /etc/grub/grub.conf 配置文件 password = 123456 password --md5 $5$H.........SS grub-crypt --md5 ...
- C#:使用MD5对用户密码加密与解密
C#中常涉及到对用户密码的加密于解密的算法,其中使用MD5加密是最常见的的实现方式.本文总结了通用的算法并结合了自己的一点小经验,分享给大家. 一.使用16位.32位.64位MD5方法对用户名加密 1 ...
- JAVA中使用MD5加密实现密码加密
1.新建Md5.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 package c ...
- 使用md5的密码加密,处理用户的密码
需求 1.新增用户保存:使用md5的密码加密,如果用户没有填写密码,设置初始密码“123”: 2.修改用户保存:使用md5的加密加密 *如果修改了密码,需要进行md5的密码加密: *如果没有修改密码, ...
- 转 C#:使用MD5对用户密码加密与解密
C#中常涉及到对用户密码的加密于解密的算法,其中使用MD5加密是最常见的的实现方式.本文总结了通用的算法并结合了自己的一点小经验,分享给大家. 一.使用16位.32位.64位MD5方法对用户名加密 1 ...
随机推荐
- 详解C#泛型(三)
一.前面两篇文章分别介绍了定义泛型类型.泛型委托.泛型接口以及声明泛型方法: 详解C#泛型(一) 详解C#泛型(二) 首先回顾下如何构建泛型类: public class MyClass<T&g ...
- Java获取微信小程序二维码
tip:通过该接口,仅能生成已发布的小程序的二维码. tip:可以在开发者工具预览时生成开发版的带参二维码. tip:接口A加上接口C,总共生成的码数量限制为100,000,请谨慎调用. tip: P ...
- 使用CSS定位元素实现水平垂直居中效果
总结一下平时使用CSS技巧使元素达到水平居中效果 相对定位(或绝对定位)实现水平垂直居中: element{ position:relative; /*这个属性也可以是absolute*/ width ...
- WM_COMMAND和WM_NOTIFY区别[转]
对这几个消息的理解要先了解一下Window消息的背景. 在Windows3.1里,控件会将mouse, keybord等等的消息通知它的父窗口, 使用的消息就只有WM_COM ...
- Spark2.1.0模型设计与基本架构(下)
阅读提示:读者如果对Spark的背景知识不是很了解的话,建议首先阅读<SPARK2.1.0模型设计与基本架构(上)>一文. Spark模型设计 1. Spark编程模型 正如Hadoop在 ...
- Pycharm---新建文件时 自动添加作者时间等信息
可用的变量有: $ {PROJECT_NAME} - 当前项目的名称. $ {NAME} - 在文件创建过程中在“新建文件”对话框中指定的新文件的名称. $ {USER} - 当前用户的登录名. $ ...
- dom操作------操作元素属性的若干方法
// 1,通过HTMLElement类型的属性来获得和设置元素特性(设置的是元素属性,比如class,id,title,而不是css样式,比如float,border等)let div = docum ...
- 获取呈现在格表(table)记录的主键
用mouse点击表格(table)的行或是批定列,获取记录的主键值.在ASP.NET的MVC应用程序中,已经没有办法象ASP.NET的Data控件一样,如GridView,DataList和Repea ...
- 30分钟搞定后台登录界面(103个后台PSD源文件、素材网站)
去年八月时要做一个OA系统为了后台界面而烦恼,后来写了一篇博客(<后台管理UI的选择>)介绍了选择过程与常用后台UI,令我想不到的时竟然有许多开发者与我一样都为这个事情而花费不少时间,最后 ...
- vs2013 在win7下,使用c++创建项目各种报错问题解决方案
错误1:提示缺少mfc100ud.dll 错误2:win7 vs2013 mfc程序找不到sdkddkver.h 错误3:error LNK1158: 无法运行“rc.exe” 等等; 在网上搜了好久 ...