PDA

View Full Version : چطوری میشه درازای کد MD5 رو تغییر داد؟!



hamzehshabani
سه شنبه 06 دی 1390, 19:17 عصر
سلام دوستان ، آقا من یه برنامه دارم که میخوام توش نسبت به 3 تا تکست باکس یه کد تصادفی یا اختصاصی (مخصوص) بده که من از MD5 استفاده کردم که در نهایت برای هر جنسی که میره تو انبار یه کد ساخته بشه و من براش بارکد بسازم، همونطوری که میدونید MD5 یه کد بسیار طولانی بهم میده اما من یه کد میخوام نهایتا 10 کارکتر داشته باشه که بارکد طولانی نشه.
پیشنهادی ندارید؟ کاری میشه کرد MD5 کد کوچیک بده؟

Hajivandian
سه شنبه 06 دی 1390, 19:44 عصر
میتونی از دستور زیر استفاده کنی


.GetHashCode().ToString("X10");

hamzehshabani
سه شنبه 06 دی 1390, 20:05 عصر
یکم بیشتر توضیح میدید؟ متوجه نشدم این کدی هستش که نوشتمش.



SHA1 md5Hasher = SHA1.Create();
string Code;
Code=comboBox4.Text+textBox9.Text+comboBox5.Text;
byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(Co de));
StringBuilder sBuilder = new StringBuilder();
for (int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));
}
textBox3.Text = sBuilder.ToString();

rahmatr
سه شنبه 06 دی 1390, 20:21 عصر
می دانید که md5 قابل برگشت نیست یعنی نمی شود فهمید رشته اولیه چی بوده.
حالا وقتی بارکدخوان بارکد یک کالا را خواند از کجا می فهمید که مربوط به کدام کالاست؟!

اگر جوابتون این است که رشته md5 را هم در بانک اطلاعاتی ذخیره کردید، پس به جای اون فیلد از یک فیلد identity int استفاده کنید. کاری که همه نرم افزارهای انبارداری می کنند.

Hajivandian
سه شنبه 06 دی 1390, 20:24 عصر
sBuilder.GetHashCode().ToString("X10");

hamzehshabani
سه شنبه 06 دی 1390, 21:59 عصر
با این کد به نتیجه رسیدم ممنونم.


SHA1 md5Hasher = SHA1.Create();
string Code;
Code=comboBox4.Text+textBox9.Text+comboBox5.Text;
// md5Hasher.GetHashCode().ToString("X10");
byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(Co de));
StringBuilder sBuilder = new StringBuilder();
for (int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));
}
sBuilder.Length = 6;
textBox3.Text = sBuilder.ToString();

سوداگر
سه شنبه 06 دی 1390, 22:05 عصر
می دانید که md5 قابل برگشت نیست یعنی نمی شود فهمید رشته اولیه چی بوده.
حالا وقتی بارکدخوان بارکد یک کالا را خواند از کجا می فهمید که مربوط به کدام کالاست؟!
ربطی به برگشت پذیر یا ناپذیر بودن نداره. تمام عملیات انجام شده یکطرفه است و ما فقط نوشته روی بارکد رو به یک کد 10 رقمی تبدیل می کنیم، حالا اگه 100 بار، یک بارکد را بخوانیم، نتیجه ی 100 مرتبه با هم برابر است و این برای ما کافی است. قصد دی کد کردن نداریم!