文献种类:专题技术总结文献;
开发工具与关键技术: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>