Asp.net 使用三元组对密码进行加密解密

Asp.net 使用三元组对密码进行加密解密,asp.net,Asp.net,我正在处理登录应用程序,我必须使用TripleDES加密和解密密码,我有一组编码,编码加密工作正常,但解密不起作用,它显示出一个错误 错误为: The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or a non-white space character among the padding characters. 编

我正在处理登录应用程序,我必须使用TripleDES加密和解密密码,我有一组编码,编码加密工作正常,但解密不起作用,它显示出一个错误

错误为:

The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or a non-white space character among the padding characters. 
编码为:

The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or a non-white space character among the padding characters. 
newuser.aspx.cs

using System;
using System.Web.UI;
using System.Data.SqlClient;
using System.Configuration;
using System.Security.Cryptography;
using System.Text;
using System.IO;

namespace WebApplication5
{
    public partial class WebForm6 : System.Web.UI.Page
    {
        SqlConnection connection;
        protected void Page_Load(object sender, EventArgs e)
        {
            connection = new SqlConnection(ConfigurationManager.ConnectionStrings["TestQueryConnectionString"].ConnectionString);
        }

        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            SqlConnection con1 = new SqlConnection(ConfigurationManager.ConnectionStrings["TestQueryConnectionString"].ConnectionString);
            con1.Open();

            SqlCommand cmd1 = new SqlCommand("select * from admin where USERNAME=@USERNAME and PASSWORD=@PASSWORD ", con1);
            cmd1.Parameters.AddWithValue("@username", txtUserName.Text);
            cmd1.Parameters.AddWithValue("@password", txtPassword.Text);
            SqlDataReader dr = cmd1.ExecuteReader();
            if (dr.HasRows)
            {
                ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('userName is already availables')</script>");

            }

            else
            {

                SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["TestQueryConnectionString"].ConnectionString);
                con.Open();
                string strQuery = "insert into admin( USERNAME,PASSWORD) values('" + txtUserName.Text +
                "','" + EncryptTripleDES(txtPassword.Text) + "')";
                connection = new SqlConnection(ConfigurationManager.ConnectionStrings["TestQueryConnectionString"].ConnectionString);
                connection.Open();
                SqlCommand cmd = new SqlCommand(strQuery, connection);
                cmd.ExecuteNonQuery();
                connection.Close();
                Response.Redirect("login.aspx");

            }

            con1.Close();
        }



        public static string EncryptTripleDES(string value)
        {
            TripleDESCryptoServiceProvider cryptoProvider = new TripleDESCryptoServiceProvider();
            MemoryStream memoryStream = new MemoryStream();
            CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoProvider.CreateEncryptor(), CryptoStreamMode.Write);
            StreamWriter streamWriter = new StreamWriter(cryptoStream);
            streamWriter.Write(value);
            streamWriter.Flush();
            cryptoStream.FlushFinalBlock();
            memoryStream.Flush();
            return Convert.ToBase64String(memoryStream.GetBuffer(), 0, Convert.ToInt32(memoryStream.Length));
        }

    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;
using System.Security.Cryptography;
using System.IO;

namespace WebApplication5
{
    public partial class WebForm4 : System.Web.UI.Page
    {
        SqlConnection connection;
        protected void Page_Load(object sender, EventArgs e)
        {
            connection = new SqlConnection(ConfigurationManager.ConnectionStrings["TestQueryConnectionString"].ConnectionString);
        }

        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            SqlConnection con1 = new SqlConnection(ConfigurationManager.ConnectionStrings["TestQueryConnectionString"].ConnectionString);
            con1.Open();
            SqlCommand cmd1 = new SqlCommand("select * from admin where USERNAME=@USERNAME and PASSWORD=@PASSWORD ", con1);
            cmd1.Parameters.AddWithValue("@username", txtUserName.Text);
            cmd1.Parameters.AddWithValue("@password", EncryptTripleDES(DecryptTripleDES(txtPassword.Text)));
            SqlDataAdapter da = new SqlDataAdapter(cmd1);
            DataTable dt = new DataTable();
            da.Fill(dt);
            if (dt.Rows.Count > 0)
            {
                Response.Redirect("emplist.aspx");
            }
            else
            {
                ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('Invalid Username and Password')</script>");
            }
            con1.Close();
        }
        protected void btnClear_Click(object sender, EventArgs e)
        {
            txtUserName.Text = "";
            txtPassword.Text = "";
        }



        public static string EncryptTripleDES(string value)
        {
            TripleDESCryptoServiceProvider cryptoProvider = new TripleDESCryptoServiceProvider();
            MemoryStream memoryStream = new MemoryStream();
            CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoProvider.CreateEncryptor(), CryptoStreamMode.Write);
            StreamWriter streamWriter = new StreamWriter(cryptoStream);
            streamWriter.Write(value);
            streamWriter.Flush();
            cryptoStream.FlushFinalBlock();
            memoryStream.Flush();
            return Convert.ToBase64String(memoryStream.GetBuffer(), 0, Convert.ToInt32(memoryStream.Length));
        }


        public static string DecryptTripleDES(string value)
        {
            TripleDESCryptoServiceProvider cryptoProvider = new TripleDESCryptoServiceProvider();
            byte[] buffer = Convert.FromBase64String(value);
            MemoryStream memoryStream = new MemoryStream(buffer);
            CryptoStream cryptoSteam = new CryptoStream(memoryStream, cryptoProvider.CreateDecryptor(), CryptoStreamMode.Read);
            StreamReader streamReader = new StreamReader(cryptoSteam);
            return streamReader.ReadToEnd();
        }

    }

}
使用系统;
使用System.Web.UI;
使用System.Data.SqlClient;
使用系统配置;
使用System.Security.Cryptography;
使用系统文本;
使用System.IO;
命名空间WebApplication5
{
公共部分类WebForm6:System.Web.UI.Page
{
SqlConnection连接;
受保护的无效页面加载(对象发送方、事件参数e)
{
连接=新的SqlConnection(ConfigurationManager.ConnectionString[“TestQueryConnectionString”].ConnectionString);
}
受保护的void btnsupmit\u单击(对象发送者,事件参数e)
{
SqlConnection con1=新的SqlConnection(ConfigurationManager.ConnectionString[“TestQueryConnectionString”].ConnectionString);
con1.Open();
SqlCommand cmd1=新SqlCommand(“从管理员中选择*,其中用户名=@USERNAME,密码=@PASSWORD”,con1);
cmd1.Parameters.AddWithValue(“@username”,txtUserName.Text);
cmd1.Parameters.AddWithValue(“@password”,txtPassword.Text);
SqlDataReader dr=cmd1.ExecuteReader();
如果(哈斯罗博士)
{
RegisterStartupScript(Page.GetType(),“validation”,“alert('用户名已可用')”);
}
其他的
{
SqlConnection con=新的SqlConnection(ConfigurationManager.ConnectionString[“TestQueryConnectionString”].ConnectionString);
con.Open();
string strQuery=“插入管理员(用户名、密码)值(“”+txtUserName.Text+
“,”+EncryptTripleDES(txtPassword.Text)+“)”;
连接=新的SqlConnection(ConfigurationManager.ConnectionString[“TestQueryConnectionString”].ConnectionString);
connection.Open();
SqlCommand cmd=新的SqlCommand(strQuery,connection);
cmd.ExecuteNonQuery();
connection.Close();
重定向(“login.aspx”);
}
con1.Close();
}
公共静态字符串加密三元组(字符串值)
{
TripleDESCryptoServiceProvider cryptoProvider=新的TripleDESCryptoServiceProvider();
MemoryStream MemoryStream=新的MemoryStream();
CryptoStream CryptoStream=新加密流(memoryStream,cryptoProvider.CreateEncryptor(),CryptoStreamMode.Write);
StreamWriter StreamWriter=新StreamWriter(加密流);
streamWriter.Write(值);
streamWriter.Flush();
cryptoStream.FlushFinalBlock();
memoryStream.Flush();
返回Convert.ToBase64String(memoryStream.GetBuffer(),0,Convert.ToInt32(memoryStream.Length));
}
}
}
login.aspx.cs

using System;
using System.Web.UI;
using System.Data.SqlClient;
using System.Configuration;
using System.Security.Cryptography;
using System.Text;
using System.IO;

namespace WebApplication5
{
    public partial class WebForm6 : System.Web.UI.Page
    {
        SqlConnection connection;
        protected void Page_Load(object sender, EventArgs e)
        {
            connection = new SqlConnection(ConfigurationManager.ConnectionStrings["TestQueryConnectionString"].ConnectionString);
        }

        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            SqlConnection con1 = new SqlConnection(ConfigurationManager.ConnectionStrings["TestQueryConnectionString"].ConnectionString);
            con1.Open();

            SqlCommand cmd1 = new SqlCommand("select * from admin where USERNAME=@USERNAME and PASSWORD=@PASSWORD ", con1);
            cmd1.Parameters.AddWithValue("@username", txtUserName.Text);
            cmd1.Parameters.AddWithValue("@password", txtPassword.Text);
            SqlDataReader dr = cmd1.ExecuteReader();
            if (dr.HasRows)
            {
                ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('userName is already availables')</script>");

            }

            else
            {

                SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["TestQueryConnectionString"].ConnectionString);
                con.Open();
                string strQuery = "insert into admin( USERNAME,PASSWORD) values('" + txtUserName.Text +
                "','" + EncryptTripleDES(txtPassword.Text) + "')";
                connection = new SqlConnection(ConfigurationManager.ConnectionStrings["TestQueryConnectionString"].ConnectionString);
                connection.Open();
                SqlCommand cmd = new SqlCommand(strQuery, connection);
                cmd.ExecuteNonQuery();
                connection.Close();
                Response.Redirect("login.aspx");

            }

            con1.Close();
        }



        public static string EncryptTripleDES(string value)
        {
            TripleDESCryptoServiceProvider cryptoProvider = new TripleDESCryptoServiceProvider();
            MemoryStream memoryStream = new MemoryStream();
            CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoProvider.CreateEncryptor(), CryptoStreamMode.Write);
            StreamWriter streamWriter = new StreamWriter(cryptoStream);
            streamWriter.Write(value);
            streamWriter.Flush();
            cryptoStream.FlushFinalBlock();
            memoryStream.Flush();
            return Convert.ToBase64String(memoryStream.GetBuffer(), 0, Convert.ToInt32(memoryStream.Length));
        }

    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;
using System.Security.Cryptography;
using System.IO;

namespace WebApplication5
{
    public partial class WebForm4 : System.Web.UI.Page
    {
        SqlConnection connection;
        protected void Page_Load(object sender, EventArgs e)
        {
            connection = new SqlConnection(ConfigurationManager.ConnectionStrings["TestQueryConnectionString"].ConnectionString);
        }

        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            SqlConnection con1 = new SqlConnection(ConfigurationManager.ConnectionStrings["TestQueryConnectionString"].ConnectionString);
            con1.Open();
            SqlCommand cmd1 = new SqlCommand("select * from admin where USERNAME=@USERNAME and PASSWORD=@PASSWORD ", con1);
            cmd1.Parameters.AddWithValue("@username", txtUserName.Text);
            cmd1.Parameters.AddWithValue("@password", EncryptTripleDES(DecryptTripleDES(txtPassword.Text)));
            SqlDataAdapter da = new SqlDataAdapter(cmd1);
            DataTable dt = new DataTable();
            da.Fill(dt);
            if (dt.Rows.Count > 0)
            {
                Response.Redirect("emplist.aspx");
            }
            else
            {
                ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('Invalid Username and Password')</script>");
            }
            con1.Close();
        }
        protected void btnClear_Click(object sender, EventArgs e)
        {
            txtUserName.Text = "";
            txtPassword.Text = "";
        }



        public static string EncryptTripleDES(string value)
        {
            TripleDESCryptoServiceProvider cryptoProvider = new TripleDESCryptoServiceProvider();
            MemoryStream memoryStream = new MemoryStream();
            CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoProvider.CreateEncryptor(), CryptoStreamMode.Write);
            StreamWriter streamWriter = new StreamWriter(cryptoStream);
            streamWriter.Write(value);
            streamWriter.Flush();
            cryptoStream.FlushFinalBlock();
            memoryStream.Flush();
            return Convert.ToBase64String(memoryStream.GetBuffer(), 0, Convert.ToInt32(memoryStream.Length));
        }


        public static string DecryptTripleDES(string value)
        {
            TripleDESCryptoServiceProvider cryptoProvider = new TripleDESCryptoServiceProvider();
            byte[] buffer = Convert.FromBase64String(value);
            MemoryStream memoryStream = new MemoryStream(buffer);
            CryptoStream cryptoSteam = new CryptoStream(memoryStream, cryptoProvider.CreateDecryptor(), CryptoStreamMode.Read);
            StreamReader streamReader = new StreamReader(cryptoSteam);
            return streamReader.ReadToEnd();
        }

    }

}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
使用System.Web.UI;
使用System.Web.UI.WebControl;
使用System.Data.SqlClient;
使用系统配置;
使用系统数据;
使用System.Security.Cryptography;
使用System.IO;
命名空间WebApplication5
{
公共部分类WebForm4:System.Web.UI.Page
{
SqlConnection连接;
受保护的无效页面加载(对象发送方、事件参数e)
{
连接=新的SqlConnection(ConfigurationManager.ConnectionString[“TestQueryConnectionString”].ConnectionString);
}
受保护的void btnsupmit\u单击(对象发送者,事件参数e)
{
SqlConnection con1=新的SqlConnection(ConfigurationManager.ConnectionString[“TestQueryConnectionString”].ConnectionString);
con1.Open();
SqlCommand cmd1=新SqlCommand(“从管理员中选择*,其中用户名=@USERNAME,密码=@PASSWORD”,con1);
cmd1.Parameters.AddWithValue(“@username”,txtUserName.Text);
cmd1.Parameters.AddWithValue(@password),EncryptTripleDES(DecryptTripleDES(txtPassword.Text));
SqlDataAdapter da=新的SqlDataAdapter(cmd1);
DataTable dt=新的DataTable();
da.填充(dt);
如果(dt.Rows.Count>0)
{
重定向(“emplist.aspx”);
}
其他的
{
RegisterStartupScript(Page.GetType(),“验证”,“警报('无效用户名和密码'));
}
con1.Close();
}
受保护的无效btnClear\u单击(对象发送方,事件参数e)
{
txtUserName.Text=“”;
txtPassword.Text=“”;
}
公共静态字符串加密三元组(字符串值)
{
TripleDESCryptoServiceProvider cryptoProvider=新的TripleDESCryptoServiceProvider();
MemoryStream MemoryStream=新的MemoryStream();
CryptoStream CryptoStream=新加密流(memoryStream,cryptoProvider.CreateEncryptor(),CryptoStreamMode.Write);
StreamWriter StreamWriter=新StreamWriter(加密流);
streamWriter.Write(值);
streamWriter.Flush();
cryptoStream.FlushFinalBlock();
memoryStream.Flush();
返回Convert.ToBase64String(memoryStream.GetBuffer(),0,Convert.ToInt32(memoryStream.Length));
}
公共静态字符串解密三元组(字符串值)
{
TripleDESCryptoServiceProvider cryptoProvider=新的TripleDESCryptoServiceProvider();
字节[]缓冲区=Convert.FromBase64String(值);
MemoryStream MemoryStream=新的MemoryStream(缓冲区);
CryptoStream cryptoSteam=新加密流(内存