需要加密和解密的代码,条件明文和加密文本长度应相同 [英] need code for encryption and decryption with the condition plain text and encrypted text length shoulb be same
问题描述
这是我的加密和解密代码
类文件:
使用系统;
使用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屋!