C#.NET密码加密解密源码Demo

本文提供了一套完整的C#.NET密码加密解密方法,包括DES加密/解密类的实现,通过ASP.NET处理程序进行加密解密操作,并展示了如何在HTML页面上使用JavaScript进行调用。

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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值