天天看点

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

引用:https://blog.csdn.net/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. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

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

  4. <head runat="server">

  5. <title>Untitled Page</title>

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

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

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

  9. <script language="javascript">

  10. function cmdEncrypt()

  11. {

  12. setMaxDigits(131);

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

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

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

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

  17. return;

  18. }

  19. function base64encode(str) {

  20. var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

  21. var base64DecodeChars = new Array(

  22. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,

  23. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,

  24. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,

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

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

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

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

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

  30. var out, i, len;

  31. var c1, c2, c3;

  32. len = str.length;

  33. i = 0;

  34. out = "";

  35. while(i < len) {

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

  37. if(i == len)

  38. {

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

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

  41. out += "==";

  42. break;

  43. }

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

  45. if(i == len)

  46. {

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

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

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

  50. out += "=";

  51. break;

  52. }

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

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

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

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

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

  58. }

  59. return out;

  60. }

  61. </script>

  62. </head>

  63. <body>

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

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

  66. <tr>

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

  68. </td>

  69. </tr>

  70. </table>

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

  72. <tr>

  73. <td>

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

  75. <br>

  76. <hr size="1">

  77. </td>

  78. </tr>

  79. </table>

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

  81. <tr>

  82. <td>

  83. <br>

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

  85. <hr size="1">

  86. </td>

  87. </tr>

  88. <tr>

  89. <td>

  90. <table cellpadding="0" cellspacing="1">

  91. <tr>

  92. <td>

  93. User Name:</td>

  94. <td width="20">

  95.  </td>

  96. <td>

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

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

  99. <td>

  100. </td>

  101. </tr>

  102. <tr>

  103. <td>

  104. Password:</td>

  105. <td width="20">

  106.  </td>

  107. <td>

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

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

  110. <td>

  111. </td>

  112. </tr>

  113. <tr>

  114. <td colspan="2">

  115. <td align="left">

  116. <table cellpadding="0" >

  117. <tr>

  118. <td class="">

  119. <div class="">

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

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

  122. </div>

  123. </td>

  124. </tr>

  125. </table>

  126. </td>

  127. <td>

  128. </td>

  129. <td>

  130. </tr>

  131. </table>

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

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

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

  135. </td>

  136. </tr>

  137. </table>

  138. </form>

  139. </body>

  140. </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. private RSACrypto rsa = new RSACrypto();

  17. private RSAParameters param;

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

  19. {

  20. if (!IsPostBack)

  21. {

  22. GetKey.GetKeyFunction();

  23. }

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

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

  26. param = rsa.ExportParameters(true);

  27. }

  28. protected string GetRSA_E()

  29. {

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

  31. }

  32. protected string GetRSA_M()

  33. {

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

  35. }

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

  37. {

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

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

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

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

  42. }

  43. }

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

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