需要加密和解密的代码,条件明文和加密文本长度应相同 [英] need code for encryption and decryption with the condition plain text and encrypted text length shoulb be same

查看:79
本文介绍了需要加密和解密的代码,条件明文和加密文本长度应相同的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的加密和解密代码



类文件:

使用系统;

使用System.Collections.Generic;

使用System.Linq;

使用System.Web;

使用System.Text;

使用System.Configuration;

使用System.Security.Cryptography;





公共类加密

{

公共静态字符串Encrypt1(字符串toEncrypt,bool useHashing)

{

byte [] keyArray;

byte [] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);



System.Configuration.AppSettingsReader settingsReader = new AppSettingsReader();

//从配置文件中获取密钥

string key =(string)settingsReader.GetValue(SecurityKey,typeof(String));

//System.Windows.Forms.MessageBox.Show(key);

if(useHashing)

{

MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();

keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key));

hashmd5.Clear();

}

else

keyArray = UTF8Encoding.UTF8.GetBytes(key);



TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();

tdes.Key = keyArray;

tdes.Mode = CipherMode.ECB;

tdes.Padding = PaddingMode.PKCS7;



ICryptoTransform cTransform = tdes.CreateEncryptor();

byte [] resultArray = cTransform.TransformFinalBlock(toEncryptArray,0 ,toEncryptArray.Length);

tdes.Clear();

返回Convert.ToBase64String(resultArray,0,resultArray.Length);

} $ / $


public static string Decrypt(string cipherString,bool useHashing)

{

byte [] keyArray;

byte [] toEncryptArray = Convert.FromBase64String(cipherString);



System.Configuration.AppSettingsReader settingsReader = new AppSettingsReader();

//从配置文件中获取密钥以打开锁!

string key =(string)settingsReader.GetValue(SecurityKey,typeof(String));



if(useHashing)

{

MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();

keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key));

hashmd5.Clear( );

}

其他

keyArray = UTF8Encoding.UTF8.GetBytes(key);



TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();

tdes.Key = keyArray;

tdes.Mode = CipherMode .ECB;

tdes.Padding = PaddingMode.PKCS7;



ICryptoTransform cTransform = tdes.CreateDecryptor();

byte [] resultArray = cTransform.TransformFinalBlock(toEncryptArray,0,toEncryptArray.Length);



tdes.Clear();

返回UTF8Encoding.UTF8.GetString(resultArray);

}

}



代码: -



here is my code for encryption and decryption

class file:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;
using System.Configuration;
using System.Security.Cryptography;


public class Encrypt
{
public static string Encrypt1(string toEncrypt, bool useHashing)
{
byte[] keyArray;
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);

System.Configuration.AppSettingsReader settingsReader = new AppSettingsReader();
// Get the key from config file
string key = (string)settingsReader.GetValue("SecurityKey", typeof(String));
//System.Windows.Forms.MessageBox.Show(key);
if (useHashing)
{
MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key));
hashmd5.Clear();
}
else
keyArray = UTF8Encoding.UTF8.GetBytes(key);

TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
tdes.Key = keyArray;
tdes.Mode = CipherMode.ECB;
tdes.Padding = PaddingMode.PKCS7;

ICryptoTransform cTransform = tdes.CreateEncryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
tdes.Clear();
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}

public static string Decrypt(string cipherString, bool useHashing)
{
byte[] keyArray;
byte[] toEncryptArray = Convert.FromBase64String(cipherString);

System.Configuration.AppSettingsReader settingsReader = new AppSettingsReader();
//Get your key from config file to open the lock!
string key = (string)settingsReader.GetValue("SecurityKey", typeof(String));

if (useHashing)
{
MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key));
hashmd5.Clear();
}
else
keyArray = UTF8Encoding.UTF8.GetBytes(key);

TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
tdes.Key = keyArray;
tdes.Mode = CipherMode.ECB;
tdes.Padding = PaddingMode.PKCS7;

ICryptoTransform cTransform = tdes.CreateDecryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);

tdes.Clear();
return UTF8Encoding.UTF8.GetString(resultArray);
}
}

code:-

protected void Button1_Click(object sender, EventArgs e)
    {
        if (TextBox1.Text == "")
        {

        }
        else
        {

            string clearText = TextBox1.Text.Trim();
            string cipherText = Encrypt.Encrypt1(clearText, true);
            TextBox3.Visible = false;
            //label3.Visible = false;
            TextBox2.Text = cipherText;
            Button2.Enabled = true;
            //textBox1.Text = txtCipherText.Text.ToString();
        }
        Panel1.Visible = true;
        Button2.Visible = true;
    }
    protected void Button2_Click(object sender, EventArgs e)
    {

            string cipherText = TextBox2.Text.Trim();
            string decryptedText = Encrypt.Decrypt(cipherText, true);
            TextBox3.Text = decryptedText;
            TextBox3.Visible = true;
            //label3.Visible = true;
            con.Open();
            SqlCommand cmd = new SqlCommand("insert into encrypt values('" + TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox3   .Text + "')", con);
            cmd.ExecuteNonQuery();
            con.Close();
            Button2.Visible = true;
            Panel1.Visible = true;
            Panel2.Visible = true;


    }

推荐答案

检查此代码项目链接,该链接具有多个算法,可以同等地实现字符串长度。



经典加密技术 [ ^ ]



希望这会对你有所帮助。
Check this code project link which have multiple algorithms to implement with equal string length.

Classical Encryption Techniques[^]

Hope this helps you.


这篇关于需要加密和解密的代码,条件明文和加密文本长度应相同的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆