• C# DES加密解密


    前台layui布局:

    <div class="layui-form-item">
        <div class="layui-inline">
            <label class="layui-form-label">未加密密码</label>
            <div class="layui-input-block">
                <input type="text" name="UnEncryptPwd" autocomplete="off" placeholder="请输入密码" class="layui-input" />
            </div>
        </div>
    
        <div class="layui-inline">
            <button type="button" id="EncryptPwd" class="layui-form-label layui-btn layui-btn-primary">加密</button>
            <div class="layui-input-block">
                <input type="text" name="DecryptPwd" placeholder="" autocomplete="off" class="layui-input" />
            </div>
        </div>
    </div>
    <div class="layui-form-item">
        <div class="layui-inline">
            <label class="layui-form-label">已加密密码</label>
            <div class="layui-input-block">
                <input type="text" name="EncryptPwd" autocomplete="off" placeholder="请输入密码" class="layui-input" />
            </div>
        </div>
    
        <div class="layui-inline">
            <button type="button" id="DecryptPwd" class="layui-form-label layui-btn layui-btn-primary">解密</button>
            <div class="layui-input-block">
                <input type="text" name="txtDecryptPwd" placeholder="" autocomplete="off" class="layui-input" />
            </div>
        </div>
    </div>

    ajax发起请求:

    <script type="text/javascript">
        $(function () {
            //加密
            $("#EncryptPwd").click(function () {
                var $unEncryptPwd = $("input[name=UnEncryptPwd]");//密码输入框
    
                $.post("/Ashx/Login.ashx", {
                    action: "EncryptPwd",
                    unEncryptPwd: $unEncryptPwd.val()//未加密密码
                }, function (data) {
                    data = JSON.parse(data);
                    $("input[name=DecryptPwd]").val(data.msg);
                });
            });
            //解密
            $("#DecryptPwd").click(function () {
                var $EncryptPwd = $("input[name=EncryptPwd]");//密码输入框
    
                $.post("/Ashx/Login.ashx", {
                    action: "DecryptPwd",
                    EncryptPwd: $EncryptPwd.val()//未加密密码
                }, function (data) {
                    data = JSON.parse(data);
                    $("input[name=txtDecryptPwd]").val(data.msg);
                });
            });
        });
    </script>

    一般处理程序接受action并通过反射调用对应公共方法

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        string action = context.Request.Params["action"];
        MethodInfo mi = this.GetType().GetMethod(action);
        mi.Invoke(this, null);
    }
    
    public void EncryptPwd()
    {
        var context = HttpContext.Current;
        string unEncryptPwd = context.Request.Params["unEncryptPwd"];
    
        string result = "{"code":1,"msg":""+ DESEncrypt(unEncryptPwd) + ""}";
        context.Response.Write(result);
    }
    public void DecryptPwd()
    {
        var context = HttpContext.Current;
        string EncryptPwd = context.Request.Params["EncryptPwd"];
    
        string result = "{"code":1,"msg":"" + DESDecrypt(EncryptPwd) + ""}";
        context.Response.Write(result);
    }
    /// <summary>
    /// DES数据加密
    /// </summary>
    /// <param name="Text"></param>
    /// <param name="sKey"></param>
    /// <returns></returns>
    private string DESEncrypt(string Text, string sKey = "pwdKey")
    {
        DESCryptoServiceProvider des = new DESCryptoServiceProvider();
        byte[] inputByteArray;
        inputByteArray = Encoding.Default.GetBytes(Text);
        des.Key = ASCIIEncoding.ASCII.GetBytes(FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
        des.IV = ASCIIEncoding.ASCII.GetBytes(FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
        MemoryStream ms = new 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();
    }
    
    /// <summary>
    /// DES数据解密
    /// </summary>
    /// <param name="Text"></param>
    /// <param name="sKey"></param>
    /// <returns></returns>
    private string DESDecrypt(string pToDecrypt, string sKey = "pwdKey")
    {
        DESCryptoServiceProvider des = new DESCryptoServiceProvider();
    
        byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
        for (int x = 0; x < pToDecrypt.Length / 2; x++)
        {
            int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
            inputByteArray[x] = (byte)i;
        }
    
        des.Key = ASCIIEncoding.ASCII.GetBytes(FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
        des.IV = ASCIIEncoding.ASCII.GetBytes(FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
        MemoryStream ms = new MemoryStream();
        CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
        cs.Write(inputByteArray, 0, inputByteArray.Length);
        cs.FlushFinalBlock();
    
        StringBuilder ret = new StringBuilder();
    
        return System.Text.Encoding.Default.GetString(ms.ToArray());
    }
  • 相关阅读:
    zabbix短信网关调用问题总结
    zabbix短信接口调用
    Windows Open with Sublime Text
    [转载]windows下安装Python虚拟环境virtualenvwrapper-win
    Resilio-sync auto restart
    django-orm-standalone
    RabbitMQ笔记
    RabbitMQ启动出错:- unable to connect to epmd on xxxx: timeout (timed out)
    [Python笔记]第十六篇:web框架之Tornado
    [前端笔记]第三篇:JavaScript
  • 原文地址:https://www.cnblogs.com/zhyue93/p/csharp_scrpt.html
Copyright © 2020-2023  润新知