js前台加密传输到后台C#解密

3 篇文章 0 订阅


源码下载地址:js前台加密传输到后台c#解密


前提条件:

1、添加3个js,在代码crypto文件夹中

2、添加4个类文件,在代码App_Code\Migrated文件夹中

3、两个加密解密文件,在代码MyXml文件夹中


前台代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="LoginNew.aspx.cs" Inherits="LoginNew" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>

    <script language="javascript" src="crypto/BigInt.js"></script>

    <script language="javascript" src="crypto/Barrett.js"></script>

    <script language="javascript" src="crypto/RSA.js"></script>
<script language="javascript">


		function cmdEncrypt()
		{
		    setMaxDigits(131);
		    //这句话在我的代码里面放在这里head之间会报错,把cmdEncrypt()方法移到body上执行不会报错
			var key = new RSAKeyPair("<%=GetRSA_E()%>", "", "<%=GetRSA_M()%>");  
			document.getElementById("posx").value = encryptedString(key,base64encode(document.getElementById("txtUserName").value) + "\\" + base64encode(document.getElementById("txtPassword").value));
			document.getElementById("txtPassword").value="";
			return;
		}
		function base64encode(str) {
	
			var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
			var base64DecodeChars = new Array(
			-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
			-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
			-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,
			52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
			-1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
			15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
			-1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
			41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);
			var out, i, len;
			var c1, c2, c3;

			len = str.length;
			i = 0;
			out = "";
			while(i < len) {
			c1 = str.charCodeAt(i++) & 0xff;
			if(i == len)
			{
				out += base64EncodeChars.charAt(c1 >> 2);
				out += base64EncodeChars.charAt((c1 & 0x3) << 4);
				out += "==";
				break;
			}
			c2 = str.charCodeAt(i++);
			if(i == len)
			{
				out += base64EncodeChars.charAt(c1 >> 2);
				out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
				out += base64EncodeChars.charAt((c2 & 0xF) << 2);
				out += "=";
				break;
			}
			c3 = str.charCodeAt(i++);
			out += base64EncodeChars.charAt(c1 >> 2);
			out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
			out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6));
			out += base64EncodeChars.charAt(c3 & 0x3F);
			}
			return out;
		}
    </script>
</head>
<body>
<form id="Form1" method="post" runat="server">
        <table width="100%" border="0" cellpadding="0" cellspacing="0">
            <tr>
                <td align="right" height="28" nowrap>
                </td>
            </tr>
        </table>
        <table width="100%" border="0" cellpadding="3" cellspacing="0" style="background-color: white">
            <tr>
                <td>
                    <span>Log On to APPa</span>
                    <br>
                    <hr size="1">
                </td>
            </tr>
        </table>
        <table width="100%" cellpadding="3" cellspacing="0" border="0">
            <tr>
                <td>
                    <br>
                    Please enter your user name and password:<br>
                    <hr size="1">
                </td>
            </tr>
            <tr>
                <td>
                    <table border="0" cellpadding="0" cellspacing="1">
                        <tr>
                            <td>
                                User Name:</td>
                            <td width="20">
                                 </td>
                            <td>
                                <asp:TextBox EnableViewState="False" MaxLength="30" ID="txtUserName" runat="server"
                                    Width="200px"></asp:TextBox></td>
                            <td>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                Password:</td>
                            <td width="20">
                                 </td>
                            <td>
                                <asp:TextBox EnableViewState="False" MaxLength="30" ID="txtPassword" runat="server"
                                    TextMode="Password" Width="200px"></asp:TextBox></td>
                            <td>
                            </td>
                        </tr>
                        <tr>
                            <td colspan="2">
                            <td align="left">
                                <table cellpadding="0" border="0">
                                    <tr>
                                        <td class="">
                                            <div class="">
                                                <input type="button" id="btnLogin" runat="Server" value="Login" οnclick="javascript:cmdEncrypt();"
                                                    name="btnLogin" onserverclick="btnLogin_ServerClick">
                                            </div>
                                        </td>
                                    </tr>
                                </table>
                            </td>
                            <td>
                            </td>
                            <td>
                        </tr>
                    </table>
                    <asp:Label ID="lblMsg" EnableViewState="False" runat="server"></asp:Label><br>
                    <asp:Label ID="lblError" EnableViewState="False" runat="server" ForeColor="red"></asp:Label><br>
                    <asp:HiddenField ID="posx" runat="server" />
                </td>
            </tr>
        </table>
    </form>
</body>
</html>

后台代码:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Security.Cryptography;
using System.IO;
using CodeName.APPa;
public partial class LoginNew : System.Web.UI.Page
{

    private RSACrypto rsa = new RSACrypto();
    private RSAParameters param;
    protected void Page_Load(object sender, System.EventArgs e)
    {
        if (!IsPostBack)
        {
            GetKey.GetKeyFunction();
        }
        string path = Session["key"].ToString() + ConfigurationManager.AppSettings["rsaPrivateKeyFilePath"];
        rsa.InitCrypto(Server.MapPath("~/MyXml/") + path);
        param = rsa.ExportParameters(true);
    }
    protected string GetRSA_E()
    {
        return StringHelper.BytesToHexString(param.Exponent);
    }
    protected string GetRSA_M()
    {
        return StringHelper.BytesToHexString(param.Modulus);
    }

    protected void btnLogin_ServerClick(object sender, System.EventArgs e)
    {
        string tmp = StringHelper.ASCIIBytesToString(rsa.Decrypt(StringHelper.HexStringToBytes(Request.Params["posx"])));
        string[] parts = tmp.Split('\\');
        string username = StringHelper.ASCIIBytesToString(StringHelper.FromBase64(parts[0]));
        string password = StringHelper.ASCIIBytesToString(StringHelper.FromBase64(parts[1]));

    }
}

webconfig配置文件:在appSettings节点中加入这3句话

<appSettings>
		<add key="authDomainServer" value="SERVERa"/>
		<add key="rsaPublicKeyFilePath" value="private.xml"/>
		<add key="rsaPrivateKeyFilePath" value="private.xml"/>
</appSettings>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值