Hỏi đáp
Chia sẻ kiến thức, cùng nhau phát triển
Qua ngâm cứu hướng dẫn từ HowKteam.com, mình đã serializer file (chứa thông tin kết nối đến CSDL), giờ muốn mã hóa (đã có hàm mã hóa) thì mò mãi mà chả ra, mong mọi người giúp với ạ! tks trước!
public void Serialize(Connect cnn)
{
XmlSerializer seri = new XmlSerializer(typeof(Connect));
using (StreamWriter sw = new StreamWriter(new FileStream("Connect.cn", FileMode.Create)))
{
seri.Serialize(sw, cnn);
sw.Close();
}
}
public Connect Deserialize(string FileConnName)
{
Connect conn = new Connect();
XmlSerializer seri = new XmlSerializer(typeof(Connect));
StreamReader sr = new StreamReader(new FileStream(FileConnName, FileMode.Open));
object obj = seri.Deserialize(sr);
conn = (Connect)obj;
sr.Close();
return conn;
}
private void btnConnect_Click(object sender, EventArgs e)
{
Connect cnn = new Connect();
cnn.ServerName = txbServer.Text;
cnn.Database = txbDatabase.Text;
cnn.UserName = txbUser.Text;
cnn.PassWord = txbPassword.Text;
if (ConnectBUS.Instance.CheckConnect(cnn.ToString()))
{
MessageBox.Show("Kết nối thành công đến CSDL!");
//Thực hiện mã hóa ngày chổ này, trước khi Serialize
ConnectBUS.Instance.Serialize(cnn);
}
}
public string Encrypt(string sEncrypt, string sPassEncrypt)
{
byte[] keyArray;
byte[] sEncryptArray = UTF32Encoding.UTF32.GetBytes(sEncrypt);
MD5CryptoServiceProvider hashMD5 = new MD5CryptoServiceProvider();
keyArray = hashMD5.ComputeHash(UTF32Encoding.UTF32.GetBytes(sPassEncrypt));
TripleDESCryptoServiceProvider tDES = new TripleDESCryptoServiceProvider();
tDES.Key = keyArray;
tDES.Mode = CipherMode.ECB;
tDES.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransForm = tDES.CreateEncryptor();
byte[] resultArray = cTransForm.TransformFinalBlock(sEncryptArray, 0, sEncryptArray.Length);
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}
Cái này bạn dùng vậy nè.
Đại khái bạn phải có một biến lớp là EncryptedXML để giữ cái file XML cần mã hóa cho bạn với một biến lớp TripleDESCryptoServiceProvider để lấy ra với nắm cái thuật toán mã hóa và cái key mã hóa. Quá trình Encrypt thì khá rắc rối, bạn cứ setting như trên chớ không biết giải thích ra sao, đại khái là sau khi nó mã hóa file XML của bạn nó sẽ bọc trong 1 cái định dạng XML nữa và mình phải theo chuẩn như vậy để sau này nó hiểu mà Decrypt. Còn Decrypt cứ lấy nguyên cái key đó là được.
Bạn setting Key, Mode và Padding cho nó, Key bạn tự đặt theo tiêu chuẩn của TripleDES còn Mode và Padding chuẩn thì như trên. Và thêm nữa bạn đọc file XML lên bằng lớp XmlDocument thì nó mới mã hóa, sử dụng cái khác nó không hiểu đâu. Nhớ thêm Reference System.Security
Có nhiều thuật toán mã hóa nữa, hình như có mã hóa 2 key nữa mà mình nghĩ chừng này đủ rồi. Chi tiết bạn lên đây đọc https://msdn.microsoft.com/en-us/library/system.security.cryptography.xml.encryptedxml(v=vs.110).aspx
đâu thấy bạn mã hóa đâu
Qua ngâm cứu từ google thấy thèn này cũng khá hay (nhưng khổ nổi trình độ có giới hạn nên chưa thể hiểu hết những thâm thúy code), Mong HowKteam giải thích giúp + tôi muốn đặt pass để mã hóa thì làm như thế nào! tks nhiều.