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

引用:https://blog.youkuaiyun.com/angle_greensky110/article/details/48293653?utm_medium=distribute.pc_relevant_download.none-task-blog-BlogCommendFromBaidu-1.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-BlogCommendFromBaidu-1.nonecas

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

 

前提条件:

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

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

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

 

前台代码:

 

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

  2.  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  4. <html xmlns="http://www.w3.org/1999/xhtml">

  5. <head runat="server">

  6. <title>Untitled Page</title>

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

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

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

  13. <script language="javascript">

  14.  
  15.  
  16. function cmdEncrypt()

  17. {

  18. setMaxDigits(131);

  19. //这句话在我的代码里面放在这里head之间会报错,把cmdEncrypt()方法移到body上执行不会报错

  20. var key = new RSAKeyPair("<%=GetRSA_E()%>", "", "<%=GetRSA_M()%>");

  21. document.getElementById("posx").value = encryptedString(key,base64encode(document.getElementById("txtUserName").value) + "\\" + base64encode(document.getElementById("txtPassword").value));

  22. document.getElementById("txtPassword").value="";

  23. return;

  24. }

  25. function base64encode(str) {

  26.  
  27. var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

  28. var base64DecodeChars = new Array(

  29. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,

  30. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,

  31. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,

  32. 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,

  33. -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,

  34. 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,

  35. -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,

  36. 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);

  37. var out, i, len;

  38. var c1, c2, c3;

  39.  
  40. len = str.length;

  41. i = 0;

  42. out = "";

  43. while(i < len) {

  44. c1 = str.charCodeAt(i++) & 0xff;

  45. if(i == len)

  46. {

  47. out += base64EncodeChars.charAt(c1 >> 2);

  48. out += base64EncodeChars.charAt((c1 & 0x3) << 4);

  49. out += "==";

  50. break;

  51. }

  52. c2 = str.charCodeAt(i++);

  53. if(i == len)

  54. {

  55. out += base64EncodeChars.charAt(c1 >> 2);

  56. out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));

  57. out += base64EncodeChars.charAt((c2 & 0xF) << 2);

  58. out += "=";

  59. break;

  60. }

  61. c3 = str.charCodeAt(i++);

  62. out += base64EncodeChars.charAt(c1 >> 2);

  63. out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));

  64. out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6));

  65. out += base64EncodeChars.charAt(c3 & 0x3F);

  66. }

  67. return out;

  68. }

  69. </script>

  70. </head>

  71. <body>

  72. <form id="Form1" method="post" runat="server">

  73. <table width="100%" border="0" cellpadding="0" cellspacing="0">

  74. <tr>

  75. <td align="right" height="28" nowrap>

  76. </td>

  77. </tr>

  78. </table>

  79. <table width="100%" border="0" cellpadding="3" cellspacing="0" style="background-color: white">

  80. <tr>

  81. <td>

  82. <span>Log On to APPa</span>

  83. <br>

  84. <hr size="1">

  85. </td>

  86. </tr>

  87. </table>

  88. <table width="100%" cellpadding="3" cellspacing="0" border="0">

  89. <tr>

  90. <td>

  91. <br>

  92. Please enter your user name and password:<br>

  93. <hr size="1">

  94. </td>

  95. </tr>

  96. <tr>

  97. <td>

  98. <table border="0" cellpadding="0" cellspacing="1">

  99. <tr>

  100. <td>

  101. User Name:</td>

  102. <td width="20">

  103.  </td>

  104. <td>

  105. <asp:TextBox EnableViewState="False" MaxLength="30" ID="txtUserName" runat="server"

  106. Width="200px"></asp:TextBox></td>

  107. <td>

  108. </td>

  109. </tr>

  110. <tr>

  111. <td>

  112. Password:</td>

  113. <td width="20">

  114.  </td>

  115. <td>

  116. <asp:TextBox EnableViewState="False" MaxLength="30" ID="txtPassword" runat="server"

  117. TextMode="Password" Width="200px"></asp:TextBox></td>

  118. <td>

  119. </td>

  120. </tr>

  121. <tr>

  122. <td colspan="2">

  123. <td align="left">

  124. <table cellpadding="0" border="0">

  125. <tr>

  126. <td class="">

  127. <div class="">

  128. <input type="button" id="btnLogin" runat="Server" value="Login" οnclick="javascript:cmdEncrypt();"

  129. name="btnLogin" onserverclick="btnLogin_ServerClick">

  130. </div>

  131. </td>

  132. </tr>

  133. </table>

  134. </td>

  135. <td>

  136. </td>

  137. <td>

  138. </tr>

  139. </table>

  140. <asp:Label ID="lblMsg" EnableViewState="False" runat="server"></asp:Label><br>

  141. <asp:Label ID="lblError" EnableViewState="False" runat="server" ForeColor="red"></asp:Label><br>

  142. <asp:HiddenField ID="posx" runat="server" />

  143. </td>

  144. </tr>

  145. </table>

  146. </form>

  147. </body>

  148. </html>


后台代码:

 

 

 
  1. using System;

  2. using System.Data;

  3. using System.Configuration;

  4. using System.Collections;

  5. using System.Web;

  6. using System.Web.Security;

  7. using System.Web.UI;

  8. using System.Web.UI.WebControls;

  9. using System.Web.UI.WebControls.WebParts;

  10. using System.Web.UI.HtmlControls;

  11. using System.Security.Cryptography;

  12. using System.IO;

  13. using CodeName.APPa;

  14. public partial class LoginNew : System.Web.UI.Page

  15. {

  16.  
  17. private RSACrypto rsa = new RSACrypto();

  18. private RSAParameters param;

  19. protected void Page_Load(object sender, System.EventArgs e)

  20. {

  21. if (!IsPostBack)

  22. {

  23. GetKey.GetKeyFunction();

  24. }

  25. string path = Session["key"].ToString() + ConfigurationManager.AppSettings["rsaPrivateKeyFilePath"];

  26. rsa.InitCrypto(Server.MapPath("~/MyXml/") + path);

  27. param = rsa.ExportParameters(true);

  28. }

  29. protected string GetRSA_E()

  30. {

  31. return StringHelper.BytesToHexString(param.Exponent);

  32. }

  33. protected string GetRSA_M()

  34. {

  35. return StringHelper.BytesToHexString(param.Modulus);

  36. }

  37.  
  38. protected void btnLogin_ServerClick(object sender, System.EventArgs e)

  39. {

  40. string tmp = StringHelper.ASCIIBytesToString(rsa.Decrypt(StringHelper.HexStringToBytes(Request.Params["posx"])));

  41. string[] parts = tmp.Split('\\');

  42. string username = StringHelper.ASCIIBytesToString(StringHelper.FromBase64(parts[0]));

  43. string password = StringHelper.ASCIIBytesToString(StringHelper.FromBase64(parts[1]));

  44.  
  45. }

  46. }


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、付费专栏及课程。

余额充值