C#MVC DES CBC模式解密

文献种类:专题技术总结文献;
开发工具与关键技术:VisualStudio2017、C#
作者:高俊杰  ;年级:1703;撰写时间:2019年1月28日

代码如下:

        /// <summary>

        /// DES CBC模式解密

        /// </summary>

        /// <param name="aStrString">加密的字符串</param>

        /// <param name="aStrKey">密钥</param>

        ///  <param name="aStrIv">解密矢量:只有在CBC解密模式下才适用</param>

        public ActionResult Decrypt3DES(string aStrString, string aStrKey, string aStrIv)

        {

            CipherMode CbcMode = CipherMode.ECB;

            try

            {

                var des = new TripleDESCryptoServiceProvider

                {

                    Key = Encoding.UTF8.GetBytes(aStrKey),

                    Mode = CbcMode,

                    Padding = PaddingMode.PKCS7

                };

                if (CbcMode == CipherMode.CBC)

                {

                    des.IV = Encoding.UTF8.GetBytes(aStrIv);

                }

                var desDecrypt = des.CreateDecryptor();

                var bStrString = "";

                byte[] buffer = Convert.FromBase64String(aStrString);

                bStrString = Encoding.UTF8.GetString(desDecrypt.TransformFinalBlock(buffer, 0, buffer.Length));

                return Json(bStrString, JsonRequestBehavior.AllowGet);

            }

            catch (Exception)

            {

                return Json("failed", JsonRequestBehavior.AllowGet);

            }

      }

效果如下:

页面代码如下:

<div>

         <label>DES数据解密</label>

         <div>

              <labe>DES密钥:</label>

              <div>

                   <input id="3DESEMMY">

              </div>

         </div>

         <div>

             <label>DES向量:</label>

             <div>

                 <input id="3DESEMXL">

             </div>

         </div>

         <div>

             <label>解密前:</label>

             <div>

                 <input id="3DESEMQ">

             </div>

         </div>

         <div>

             <label>解密后:</label>

             <div>

                 <input id="3DESEMH">

             </div>

          </div>

          <button id="3DESEMQR" >确认</button>

      </div>

javascript代码如下:

<script>

        $("#3DESEMQR").click(function () {

            var aStrString = $("#3DESEMQ").val().trim();

            var aStrKey = $("#3DESEMMY").val().trim();

            var aStrIv = $("#3DESEMXL").val().trim();

            if (aStrString != "" && aStrKey != "") {

                if (aStrString != "" && aStrKey != "") {

                    if (aStrKey.length == 24) {

                        if (aStrIv.length == 8) {

                            $.post("/MD5JM/Decrypt3DES", {

                                aStrString, aStrString,

                                aStrKey: aStrKey,

                                aStrIv: aStrIv

                            }

                                , function (data) {

                                    $("#3DESEMH").val(data);

                                    if (aStrString == "") {

                                        $("#3DESEMH").val("");

                                    }

                                });

                        } else {

                            layer.alert("请输入正确的向量长度!(8位)", { icon: 0, title: "提示", offset: "100px" });

                        }

                    } else {

                        layer.alert("请输入正确的密钥长度!(24位)", { icon: 0, title: "提示", offset: "100px" });

                    }

                } else {

                    layer.alert("请填写完整!", { icon: 0, title: "提示", offset: "100px" });

                }

            }

        });

    </script>

猜你喜欢

转载自blog.csdn.net/u012289399/article/details/88854447