制作URL以GET方式提交的简单加密程序

首先我们用到的是

DESCryptoServiceProvider 类

对此微软给出的解释是

定义访问数据加密标准 (DES) 算法的加密服务提供程序 (CSP) 版本的包装对象。无法继承此类。

接下来是接受参数页面的方法:

using System;
using System.Collections.Generic;
using System.IO;
using System.Security.Cryptography;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

namespace Url加密
{
    public partial class Content : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {
                GetDate();
            }
        }

        Byte[] byKey64 = { 10, 20, 30, 40, 50, 60, 70, 80 };
        Byte[] Iv64 = { 11, 22, 33, 44, 55, 66, 77, 85 };

        public string Decrypt(string strText)
        {
            Byte[] inputByteArray = new byte[strText.Length];
            try
            {
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                inputByteArray = Convert.FromBase64String(strText);
                MemoryStream ms = new MemoryStream();
                CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byKey64, Iv64), CryptoStreamMode.Write);
                cs.Write(inputByteArray, 0, inputByteArray.Length);
                cs.FlushFinalBlock();
                System.Text.Encoding encoding = System.Text.Encoding.UTF8;
                return encoding.GetString(ms.ToArray());
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
        }

        public string content = string.Empty;

        public void GetDate()
        {
            string sql = "SELECT * FROM [Info] WHERE [Id][email protected]";
            string ConStr = "Data Source=.;Initial Catalog=DBTest;User ID=sa;Password=123456";
            SqlParameter para = new SqlParameter("@id", Decrypt(Request.QueryString["id"]));

            using (SqlConnection conn = new SqlConnection(ConStr))
            {
                conn.Open();
                SqlCommand comm = new SqlCommand(sql.ToString(), conn);
                comm.Parameters.Add(para);
                SqlDataReader reader = comm.ExecuteReader();
                while (reader.Read())
                {
                    content = reader["Details"].ToString();
                }
                reader.Close();
            }
        }
    }
}

我用的是repeater的绑定方式

然后是传入ID参数的页面后台代码如下:

using System;
using System.Collections.Generic;
using System.IO;
using System.Security.Cryptography;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

namespace Url加密
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {
                GetDate();
            }
        }

        Byte[] Iv64 = { 11, 22, 33, 44, 55, 66, 77, 85 };
        Byte[] byKey64 = { 10, 20, 30, 40, 50, 60, 70, 80 };
        public string Encrypt(string strText)
        {
            try
            {
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                Byte[] inputByteArray = Encoding.UTF8.GetBytes(strText);
                MemoryStream ms = new MemoryStream();
                CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byKey64, Iv64), CryptoStreamMode.Write);
                cs.Write(inputByteArray, 0, inputByteArray.Length);
                cs.FlushFinalBlock();
                return Convert.ToBase64String(ms.ToArray());
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
        }

        public string id = string.Empty;

        public void GetDate()
        {
            string sql = "SELECT * FROM [dbo].[Info]";
            string ConStr="Data Source=.;Initial Catalog=DBTest;User ID=sa;Password=123456";
            using(SqlConnection conn=new SqlConnection(ConStr))
            {
                conn.Open();
                SqlCommand comm=new SqlCommand(sql.ToString(),conn);
                DataSet dt = new DataSet();
                SqlDataAdapter sdt = new SqlDataAdapter(sql.ToString(),conn);
                sdt.Fill(dt);
                this.Repeater1.DataSource = dt.Tables[0];
                this.Repeater1.DataBind();
            }
        }
    }
}

他的前台参数绑定:

<asp:Repeater ID="Repeater1" runat="server">
            <ItemTemplate>
                <a href="Content.aspx?id=<%#Encrypt(Eval("Id").ToString())%>"><%#Eval("Title") %></a>
            </ItemTemplate>
        </asp:Repeater>

请注意,对于ID转换成为字符串这一步很重要。以上就是我的个人心得了。希望有大神能够继续指教完善,同时也参考了网上的代码资料。对此表示感谢

制作URL以GET方式提交的简单加密程序

时间: 2024-10-12 16:17:15

制作URL以GET方式提交的简单加密程序的相关文章

采用url链接形式提交action(非s:from方式提交)

在我们日常开发中,并不是都适合form提交,如在无线网络领域,使用form提交会导致部分手机无法解析该标签,这时候,我们可爱的url链接提交就会得到更广泛的应用了 1. 标准的WML1.0表单提交格式 <anchor>提交 <go href="<s:url value='/wap/postParams.action/>" method="get"> <postfield name="param1" val

Android 使用Post方式提交数据(登录)

在Android中,提供了标准Java接口HttpURLConnection和Apache接口HttpClient,为客户端HTTP编程提供了丰富的支持. 在HTTP通信中使用最多的就是GET和POST了,GET请求可以获取静态页面,也可以把参数放在URL字符串的后面,传递给服务器.POST与GET的不同之处在于POST的参数不是放在URL字符串里面,而是放在HTTP请求数据中. 本文将使用标准Java接口HttpURLConnection,以一个实例演示如何使用POST方式向服务器提交数据,并

AJAX PHP无刷新form表单提交的简单实现(推荐)

下面小编就为大家带来一篇AJAX PHP无刷新form表单提交的简单实现(推荐).小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 ajax.php <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head>

jquery.form.js实现将form提交转为ajax方式提交的使用方法

本文实例讲述了jquery.form.js实现将form提交转为ajax方式提交的方法.分享给大家供大家参考.具体分析如下: 这个框架集合form提交.验证.上传的功能. 这个框架必须和jquery完整版结合,否则使用min则无效. 原理:利用js进行对form进行组装成ajax的url和data,原理还是用ajax来提交,其实这完全可以自己写,但是有这个框架可能会更简单. 一.最简单例子: 第一步:引用js <!--这里的min是自己用js压缩工具对完整版进行的压缩 并不是真正的min,所以好

Ajax方式提交表单的常见编码类型总结

用Ajax方式提交表单,决定编码类型的是请求头中Content-Type,不同的值对应不同的提交和回调处理方式.而且,在项目中我们会用到前端的库或者框架,他们对于不同的Content-Type也有不同的参数写法,本文将以jQuery和AngularJS,加上XMLHttpRequest共三种方式为例,详细介绍不同Content-Type的发送请求的方式.本文考虑的Content-Type类型,共有如下几种: application/x-www-form-urlencoded multipart/

post方式get方式提交表单的主要区别

post方式get方式提交表单的主要区别: 使用表单给网站后台提交数有种两种方式,一种是post方式,一种是get方式,下面就简单介绍一下这两种方式的主要区别. 一.post方式: 此方式一般用于传递较大的数据,在数据传递之前会有打包操作,所以可能会造成数据传递数据相对较慢的情况,不过传输的数据都能够被正确的解析,不会出现类似于中文乱码的状况. 二.get方式: 通过url链接传递数据,和post相比传输的数据量较小,而且传递的数据必须是ASCCI码值范围内的,因此传递中文的时候可能会出现乱码情

JQuery以JSON方式提交数据到服务端

JQuery将Ajax数据请求进行了封装,从而使得该操作实现起来容易许多.以往我们要写很多的代码来实现该功能,现在只需要调用$.ajax()方法,并指明请求的方式.地址.数据类型,以及回调方法等.下面的代码演示了如何将客户端表单数据封装成JSON格式,然后通过JQuery的Ajax请求将数据发送到服务端,并最终将数据存储到数据库中.服务端定义为一个.ashx文件,事实上你可以将服务端定义为任何能接收并处理客户端数据的类型,如Web Service,ASP.NET Page,Handler等. 首

href以post方式提交打开

$("#newinfo").append('<li class="clearfix" ><a onclick="changeread(this);ShowReport_Click(this);"  data="' + item.msgId + '"  data1="'+messageUrl+'" class="notification-user">' + item

form表单提交转为ajax方式提交

在做项目的过程中遇到要将form表单提交转为ajax方式提交,下面是我总结的如何把form表单提交无缝转为ajax方式提交的方法. 原先的form表单长这样: <form action="xxx" method="get"> //action的值是请求的url地址 <div class="form-group"> <label for="name">姓名</label> <