C#.NET密码加密解密Demo,代码完整,简单易懂,功能实用。
获取源码方式:
第一种:打开微信,搜一搜"别打我女儿的主意"打开微信小程序,找到菜单栏,点击源码,进去就可以获得链接

第二种:可以给本文点赞、好评,然后发邮件到792166417@qq.com,如果有学习资料视频可以分享的话,可以捎带分享给我。
DESEncrypt.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Web;
namespace DESEncrypt
{
/// <summary>
/// DES加密/解密类。
/// </summary>
public class DESEncrypt
{
#region ========加密========
/// <summary>
/// 加密
/// </summary>
/// <param name="Text"></param>
/// <returns></returns>
public static string Encrypt(string Text)
{
return Encrypt(Text, "taotao");
}
/// <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(0, 8));
des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
System.IO.MemoryStream ms = new System.IO.MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
StringBuilder ret = new StringBuilder();
foreach (byte b in ms.ToArray())
{
ret.AppendFormat("{0:X2}", b);
}
return ret.ToString();
}
#endregion
#region ========解密========
/// <summary>
/// 解密
/// </summary>
/// <param name="Text"></param>
/// <returns></returns>
public static string Decrypt(string Text)
{
return Decrypt(Text, "taotao");
}
/// <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 / 2;
byte[] inputByteArray = new byte[len];
int x, i;
for (x = 0; x < len; x++)
{
i = Convert.ToInt32(Text.Substring(x * 2, 2), 16);
inputByteArray[x] = (byte)i;
}
des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
System.IO.MemoryStream ms = new System.IO.MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
return Encoding.Default.GetString(ms.ToArray());
}
#endregion
#region 生成随机加密字母字符串(数字字母混和)
/// <summary>
/// 生成随机字母字符串(数字字母混和)
/// </summary>
/// <param name="codeCount">待生成的位数</param>
public static string GetCheckCode(int codeCount)
{
string str = string.Empty;
int rep = 0;
long num2 = DateTime.Now.Ticks + rep;
rep++;
Random random = new Random(((int)(((ulong)num2) & 0xffffffffL)) | ((int)(num2 >> rep)));
for (int i = 0; i < codeCount; i++)
{
char ch;
int num = random.Next();
if ((num % 2) == 0)
{
ch = (char)(0x30 + ((ushort)(num % 10)));
}
else
{
ch = (char)(0x41 + ((ushort)(num % 0x1a)));
}
str = str + ch.ToString();
}
return str;
}
#endregion
}
}
一般处理程序:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;
using System.Data;
using System.Web.SessionState;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace DESEncrypt
{
/// <summary>
/// Handler1 的摘要说明
/// </summary>
public class Handler1 : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string action = context.Request["action"];
switch (action)
{
case "Jiami"://加密
Jiami(context);
break;
case "Jiemi"://解密
Jiemi(context);
break;
}
}
#region 加密 =====================================
private void Jiami(HttpContext context)
{
string password = context.Request.Form["password"].ToString();
string salt = context.Request.Form["salt"].ToString();
//加密
string Jiamipassword = DESEncrypt.Encrypt(password, salt);
JObject json = new JObject();
json["status"] = 1;
json["msg"] = "加密成功";
json["Jiamipassword"] = Jiamipassword;
context.Response.Write(json.ToString());
return;
}
#endregion
#region 解密 =====================================
private void Jiemi(HttpContext context)
{
string saltpassword = context.Request.Form["saltpassword"].ToString();
string salt = context.Request.Form["salt"].ToString();
//解密
string Jiemipassword = DESEncrypt.Decrypt(saltpassword, salt);
JObject json = new JObject();
json["status"] = 1;
json["msg"] = "解密成功";
json["Jiemipassword"] = Jiemipassword;
context.Response.Write(json.ToString());
return;
}
#endregion
public bool IsReusable
{
get
{
return false;
}
}
}
}
html页面代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="DESEncrypt.index" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>C# .NET一套解密/加密方法源码</title>
<script src="scripts/jquery-3.1.1.min.js"></script>
<script src="scripts/jquery.form.js"></script>
</head>
<body>
密码:<input type="text" id="password" /><br />
加密码:<input type="text" id="salt" /><br />
<input type="button" value="加密" onclick="Jiami();" />
加密之后的密码:<input type="text" id="saltpassword" />
<input type="button" value="解密" onclick="Jiemi();" />
解密之后的密码:<input type="text" id="nosaltpassword" />
</body>
</html>
<script type="text/javascript">
function Jiami() {
var password = $("#password").val();
var salt = $.trim($("#salt").val());
//用于提交表单
$.ajax({
type: "POST",
dataType: "json",
url: "Handler1.ashx?action=Jiami",
data: { "password": password, "salt": salt },
success: function (e) {
if (e.status == 1) {
alert(e.msg);
$("#saltpassword").val(e.Jiamipassword);
}
},
error: function (e) {
alert(e.statusText);
}
});
}
function Jiemi() {
var saltpassword = $("#saltpassword").val();
var salt = $.trim($("#salt").val());
//用于提交表单
$.ajax({
type: "POST",
dataType: "json",
url: "Handler1.ashx?action=Jiemi",
data: { "saltpassword": saltpassword, "salt": salt },
success: function (e) {
if (e.status == 1) {
alert(e.msg);
$("#nosaltpassword").val(e.Jiemipassword);
}
},
error: function (e) {
alert(e.statusText);
}
});
}
</script>
附加内容:
//获得6位的salt加密字符串
string salt = DESEncrypt.GetCheckCode(6);//获得6位的salt加密字符串
//加密
string password = DESEncrypt.Encrypt("123456", salt);
//解密
password = DESEncrypt.Decrypt(password, salt);
本文提供了一套完整的C#.NET密码加密解密方法,包括DES加密/解密类的实现,通过ASP.NET处理程序进行加密解密操作,并展示了如何在HTML页面上使用JavaScript进行调用。

215

被折叠的 条评论
为什么被折叠?



