WebApi MD5 加密(JS + MVC 4)

该博客详细介绍了如何在WebAPI中结合MD5进行前端(JS)和后端(MVC 4)的数据加密。首先,讨论了前端的加密请求,接着阐述了服务端的SecuritySignHelper帮助类和抽象基类的实现,包括具体的方法实例。此外,还提出了通过添加时间戳和使用UUID作为动态KEY以增强加密安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、先是前端加密请求

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>测试 - api</title>
    <script src="/Scripts/jquery-1.11.3.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {
            var apiParams = {
                account: "admin",
                password: "111111"
            };
            debugger;
           //因为此项目中,我所有的接口都需要userid ,所以不用的时候就传0
            $.ajax({
                url: "/api/user/login?token=" + paramsMd5(apiParams, "0") + "&UserId=0",
                data:apiParams,
                dataType: "json",
                type: "POST",
                async: false,
                success: function (data) {
                    $("#datashow").html(JSON.stringify(data));
                },
                error: function (ex) {
                    $("#datashow").html(JSON.stringify(ex));
                }
            });
            return;
        });
    </script>
</head>
<body>
    <div id="datetimeShow"></div>
    <div id="datetimeShowEnd"></div>
    <div id="datashow">
        
    </div>
    
    <div class="content">
        <input id="test" value="baidu.com" style="width: 90%"/>
        <input type="button" value="md5 加密" οnclick="demo();" />
		<br/>
		MD5:<label id="testmd5"></label>
	</div>
</body>
</html>
<script type="text/javascript">
    //此token 是和服务器约定的一个Key,我是给用户表建一个字段,用户可以重置此KEY
    var token = "gettokeykey";
    function paramsMd5(arr,userid) {
        var newarr = new Array();
        for (key in arr) {
            newarr.push(key);
        }
        newarr.sort(function (a, b) { return a.toLowerCase() > b.toLowerCase() ? 1 : -1; });
        var md5Str = "UserId=" + userid;
        for (var i in newarr) {
            var ks = newarr[i];
            md5Str += ("&" + ks + "=" + arr[ks]);
        }
        md5Str += token;
        return calcMD5(md5Str);
    }
    var hexcase = 0;
    var b64pad = "";
    var chrsz = 8;
    function hex_md5(s) { return binl2hex(core_md5(str2binl(s), s.length * chrsz)); }
    function b64_md5(s) { return binl2b64(core_md5(str2binl(s), s.length * chrsz)); }
    function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }
    function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }
    function calcMD5(s) { return binl2hex(core_md5(str2binl(s), s.length * chrsz)); }

    function md5_vm_test() {
        return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
    }

    function core_md5(x, len) {

        x[len >> 5] |= 0x80 << ((len) % 32);
        x[(((len + 64) >>> 9) << 4) + 14] = len;
        var a = 1732584193;
        var b = -271733879;
        var c = -1732584194;
        var d = 271733878;
        for (var i = 0; i < x.length; i += 16) {
            var olda = a;
            var oldb = b;
            var oldc = c;
            var oldd = d;

            a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936);
            d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586);
            c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819);
            b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);
            a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897);
            d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);
            c = md5_ff(c, d, a, b, x[i + 6], 17
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值