ورود

View Full Version : رمز گذاری فایل



tanzadeh7
جمعه 06 فروردین 1395, 08:05 صبح
سلام من میخوام بایت های یک فایل رو جوری ویرایش کنم که فقط خودم بتونم بخونمش. من این کدها رو برای این کار نوشتم ولی موقع خواندن فایل ویرایش شده به مشکل بر می خورم.
نوشتن:

FileInputStream fis = new FileInputStream("Test1");
FileOutputStream fos = new FileOutputStream("Test2");
int i = 0;
while ((i = fis.read()) != -1) {
fos.write(i * 2);
}


خواندن:

FileInputStream fis = new FileInputStream("Test2");
FileOutputStream fos = new FileOutputStream("Test1");
int i = 0;
while ((i = fis.read()) != -1) {
fos.write(i / 2);
}

یه چیز دیگه راهی هست که بتونم تعداد یک فایل فوق فشرده کنم. مثلا یک فایل ۱ گیگابایتی رو کنم ۲۰ مگابایت!:متفکر:

محمد فدوی
شنبه 07 فروردین 1395, 09:13 صبح
رمزگذاری فرآیند خیلی ساده‌ایه.. توی بخشی از پرونده یه کلمهٔ عبور هَش‌شده رو قرار بده و موقع باز کردنش اون رمز رو از کاربر بخواه! احتمالا فرآیندی که مدنظر شماست، رمزنگاری (https://fa.wikipedia.org/wiki/%D8%B1%D9%85%D8%B2%D9%86%DA%AF%D8%A7%D8%B1%DB%8C) هست. یکی از اشتباه‌ترین کارهای دنیا اینه که بخوایم یه الگوریتم رمزنگاری از نو بسازیم! بهتره با جستجو، یه تکنیک رمزنگاری از قبل پیاده‌سازی شده پیدا کنی و از اون استفاده کنی.



یه چیز دیگه راهی هست که بتونم تعداد یک فایل فوق فشرده کنم. مثلا یک فایل ۱ گیگابایتی رو کنم ۲۰ مگابایت!:متفکر:
معمولا پرونده‌ها رو می‌شه با مقداری بهینه‌سازی داده، فشرده کرد.. خیلی وقتا توالی‌های تکراری توی یه پرونده وجود داره، یا همهٔ گسترهٔ کاراکترها مورد نیاز اون نبوده یا دلایلی از این دست و همینا برای بهینه‌سازی و کاهش حجم پرونده استفاده می‌شه.
اما طبق اصل لانه کبوتری (https://fa.wikipedia.org/wiki/%D8%A7%D8%B5%D9%84_%D9%84%D8%A7%D9%86%D9%87_%DA%A9 %D8%A8%D9%88%D8%AA%D8%B1%DB%8C)، یه پرونده رو نمی‌شه بیشتر از یه حدی، بدون از دست دادن اطلاعات فشرده کرد. در نتیجه، در مورد پرونده‌هایی که ساختار معقولی دارن امکان کاهش حجم تا ۸۰٪ می‌شه گفت وجود نداره.

tanzadeh7
شنبه 07 فروردین 1395, 18:03 عصر
معمولا پرونده‌ها رو می‌شه با مقداری بهینه‌سازی داده، فشرده کرد.. خیلی وقتا توالی‌های تکراری توی یه پرونده وجود داره، یا همهٔ گسترهٔ کاراکترها مورد نیاز اون نبوده یا دلایلی از این دست و همینا برای بهینه‌سازی و کاهش حجم پرونده استفاده می‌شه.
اما طبق اصل لانه کبوتری (https://fa.wikipedia.org/wiki/%D8%A7%D8%B5%D9%84_%D9%84%D8%A7%D9%86%D9%87_%DA%A9 %D8%A8%D9%88%D8%AA%D8%B1%DB%8C)، یه پرونده رو نمی‌شه بیشتر از یه حدی، بدون از دست دادن اطلاعات فشرده کرد. در نتیجه، در مورد پرونده‌هایی که ساختار معقولی دارن امکان کاهش حجم تا ۸۰٪ می‌شه گفت وجود نداره.
متشکر برای پاسخ‌ , میشه یکم راهنمایی کنی که چطور میتونم یک فایل رو فشرده کنم؟نمیخوام فایل zip ویا rar کنم.

محمد فدوی
شنبه 07 فروردین 1395, 21:23 عصر
اینکه مبانی فشرده‌سازی اطلاعات چیا هستن و مواردی از این دست واقعا اینجا قابل بحث نیست و البته من هم اطلاعات زیادی در موردش ندارم که در اختیارت قرار بدم.
ولی پیشنهاد می‌کنم برای درک بهتر، یه نگاهی به الگوریتم‌های فشرده‌سازی بندازی. مثلا دوتا از معروف‌ترین‌هاش Huffman (https://en.wikipedia.org/wiki/Huffman_coding) و RLE (https://en.wikipedia.org/wiki/Run-length_encoding) هستن و که آموزش و نمونه کد ازشون توی اینترنت فراوون هست.