|
|
|
ช่วยผมเขียนโค้ด ถอดรหัส DES หน่อยครับผมลองทำแล้วแต่ก็ยังไม่ค่อเข้าใจอะครับ |
|
|
|
|
|
|
|
ผมมึนแล้วครับ ช่วยหน่อยนะครับ ขอบพระคุณอย่างสูงครับบบ
Code (C#)
#region การเข้ารหัส DES
byte[] CurrentIV = new byte[] { 51, 52, 53, 54, 55, 56, 57, 58 };//ค่า Initialization Vector สมมุติข้อมูลจำนวน 8 byte
byte[] CurrentKey = { };//key จำนวน 8 byte เพื่อเข้ารหัสข้อมูลทุกๆ 8 byte
//เพื่อให้การเข้ารหัสมีความหลายหลายลดความซ้ำซ้อน จึงนำ username มาเป็น key จำนวน 8 byte
//ถ้าUserNameมีจำนวน = 8
if (txtUserName.Text.Length == 8)
{
//แปลง txtUserName เป็น Byteและเข้ารหัส เก็บไว้ที่ตัวแปล CurrentKey
CurrentKey = Encoding.ASCII.GetBytes(txtUserName.Text);
}
//กรณีมีจำนวนมากกว่า 8
else if (txtUserName.Text.Length > 8)
{
//ใช้ method Substring ตัดตัวอักษรที่มากกว่า 8 ออก นับจาก ซ้ายไปขวา
CurrentKey = Encoding.ASCII.GetBytes(txtUserName.Text.Substring(0, 8));
}
//กรณีมีจำนวนน้อยกว่า 8
else
{
//addString เก็บตำแหน่งแรกของ Username
string addString = txtUserName.Text.Substring(0, 1);
//TotalLoop เก็บจำนวนที่ขาด
int TotalLoop = 8 - txtUserName.Text.Length;
string tempKey = txtUserName.Text;
//int i;
for (int i = 1; i <= TotalLoop; i++)
{
tempKey = tempKey + addString;//+string
}
CurrentKey = Encoding.ASCII.GetBytes(tempKey);
}
//สร้าง object จาก class
DESCryptoServiceProvider desCryp = new DESCryptoServiceProvider();
desCryp.IV = CurrentIV;
desCryp.Key = CurrentKey;
//สร้าง object จาก class MemoryStream
ms = new MemoryStream();
ms.Position = 0;
CryptoStream cs = new CryptoStream(ms, desCryp.CreateEncryptor(), CryptoStreamMode.Write);
byte[] arrByte = Encoding.ASCII.GetBytes(txtPassword.Text);
cs.Write(arrByte, 0, arrByte.Length);
cs.FlushFinalBlock();
cs.Close();
string PwdWithEncrypt;
PwdWithEncrypt = Convert.ToBase64String(ms.ToArray());
try
{
RadMessageBox.SetThemeName("Office2007Black");
using (var ts = new TransactionScope())// *TransactionScope Class ต้อง add ref system.transaction ก่อน จึงจะใช้ class ได้
{
UserName us = new UserName();
us.UserName1 = txtUserName.Text.Trim();
us.Password = PwdWithEncrypt;
us.IsNormal = "1";
us.HID = HID;
db.UserNames.InsertOnSubmit(us);
db.SubmitChanges();
ts.Complete();
}
RadMessageBox.Show("\nเพิ่ม UserName ใหม่ เรียบร้อยแล้ว !!!", "ผลการทำงาน", MessageBoxButtons.OK, RadMessageIcon.Info);
ClearPassword();
txtUserName.Focus();
}
catch (Exception ex)
{
RadMessageBox.Show("\nUserName ที่ระบุ มีแล้วในระบบ กรุณาระบุใหม่ !!!" + ex.Message, "ผลการตรวจสอบ", MessageBoxButtons.OK, RadMessageIcon.Exclamation);
txtUserName.Text = "";
txtUserName.Focus();
}
#endregion
Tag : .NET, Win (Windows App), LINQ, C#, VS 2010 (.NET 4.x)
|
|
|
|
|
|
Date :
2011-03-26 23:24:43 |
By :
Drewsn32 |
View :
1470 |
Reply :
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ทำได้ละคับ โพสถามทีไร ทามได้ทุกทีเลยแงบ ถ้าไม่โพสนี่คิดไรไม่ออก...... ><
Code (C#)
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
MemoryStream memoryStream = new MemoryStream(Convert.FromBase64String(PwdWithEncrypt));
CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoProvider.CreateDecryptor(desCryp.Key , desCryp.IV ), CryptoStreamMode.Read);
StreamReader reader = new StreamReader(cryptoStream);
PwdWithDecrypt = reader.ReadToEnd();
|
|
|
|
|
Date :
2011-03-27 00:45:46 |
By :
Drewsn32 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Date :
2011-03-27 10:45:57 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|