این دستور cksumposix است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.
برنامه:
نام
cksum - جمعبندی و اندازه فایلها را بنویسید
خلاصه
cksum [پرونده...]
شرح
La cksum شرکت باید یک چک افزونگی چرخه ای را محاسبه و روی خروجی استاندارد بنویسد
(CRC) برای هر فایل ورودی، و همچنین تعداد اکتت در هر یک را در خروجی استاندارد بنویسید
فایل. CRC استفاده شده بر اساس چند جمله ای مورد استفاده برای بررسی خطای CRC در می باشد
استاندارد ISO/IEC 8802-3:1996 (اترنت).
رمزگذاری برای جمع کنترلی CRC با چند جمله ای تولید کننده تعریف می شود:
G(x)=x32 +x26 +x23 +x22 +x16 +x12 +x11 +x10 +x8+x7+x5+x4+x2+x+1
از نظر ریاضی، مقدار CRC مربوط به یک فایل معین باید توسط
روش زیر:
1. n بیت هایی که باید ارزیابی شوند به عنوان ضرایب یک چند جمله ای mod 2 در نظر گرفته می شوند
M(x) درجه n-1. اینها n بیت ها بیت هایی از فایل هستند، با بیشترین
بیت قابل توجهی که مهم ترین بیت از اکتت اول فایل و
بیت آخر که کماهمیتترین بیت آخرین اکتت است، با بیتهای صفر پر شده است (اگر
لازم است) برای دستیابی به تعداد انتگرال اکتت و به دنبال آن یک یا چند اکتت
طول فایل را به عنوان یک مقدار باینری نشان می دهد، ابتدا اکتت کمترین اهمیت را نشان می دهد.
باید از کوچکترین تعداد هشت تایی که قادر به نمایش این عدد صحیح هستند استفاده شود.
2. M(x) در ضرب می شود x32 (یعنی 32 بیت به چپ منتقل شد) و تقسیم بر G(x) استفاده كردن
بخش mod 2، تولید باقیمانده R(x) درجه ≤ 31.
3. ضرایب از R(x) یک دنباله 32 بیتی در نظر گرفته می شوند.
4. دنباله بیت تکمیل می شود و نتیجه CRC است.
OPTIONS
ندارد.
عملگرها
عملوند زیر باید پشتیبانی شود:
پرونده نام مسیر یک فایل که باید بررسی شود. اگر نه پرونده عملوندها مشخص شده اند
ورودی استاندارد باید استفاده شود.
STDIN
ورودی استاندارد باید استفاده شود اگر خیر پرونده عملوندها مشخص شده اند و اگر a
پرونده عملوند است '-' و پیاده سازی درمان می کند '-' به معنای ورودی استاندارد.
در غیر این صورت، ورودی استاندارد نباید استفاده شود. به بخش فایل های ورودی مراجعه کنید.
INPUT فایل ها
فایل های ورودی می توانند هر نوع فایلی باشند.
محیط زیست متغیرها
متغیرهای محیطی زیر باید بر اجرای آن تأثیر بگذارند cksum:
زبان یک مقدار پیش فرض برای متغیرهای بین المللی سازی که تنظیم نشده اند یا
خالی. (به جلد تعاریف پایه POSIX.1-2008 مراجعه کنید، بخش 8.2,
بین المللی کردن متغیر برای تقدم بین المللی شدن
متغیرهایی که برای تعیین مقادیر دستههای محلی استفاده میشوند.)
LC_ALL اگر روی یک مقدار رشته ای غیر خالی تنظیم شده است، مقادیر بقیه را لغو کنید
متغیرهای بین المللی سازی
LC_CTYPE محلی را برای تفسیر توالی بایت های داده متنی تعیین کنید
به عنوان کاراکتر (به عنوان مثال، تک بایت در مقابل کاراکترهای چند بایتی در
استدلال).
LC_MESSAGES
محلی را که باید برای تأثیرگذاری بر قالب و محتویات استفاده شود، تعیین کنید
پیام های تشخیصی با خطای استاندارد نوشته شده است.
nlspath تعیین محل کاتالوگ پیام برای پردازش LC_MESSAGES.
نامتقارن رویدادها
پیش فرض
با توجه به
برای هر فایلی که با موفقیت پردازش شد، cksum ابزار باید در زیر بنویسد
قالب:
"%u %d %s\n"، <چکمه> ،# of اوکت> ،نام خانوادگی>
اگر نه پرونده عملوند، نام مسیر و راهنما مشخص شد حذف خواهد شد.
STDERR
خطای استاندارد باید فقط برای پیام های تشخیصی استفاده شود.
OUTPUT فایل ها
ندارد.
تمدید شده شرح
ندارد.
خروج وضعیت
مقادیر خروجی زیر باید برگردانده شوند:
0 همه فایل ها با موفقیت پردازش شدند.
>0 خطایی روی داد.
آثار OF خطاها
پیش فرض
La پیروی بخش هستند آموزنده
کاربرد طریقه استفاده
La cksum ابزار معمولاً برای مقایسه سریع یک فایل مشکوک با یک مورد اعتماد استفاده می شود
نسخه مشابه، مانند اطمینان از رسیدن فایل های ارسال شده از طریق رسانه های پر سر و صدا
سالم. با این حال، این مقایسه را نمی توان از نظر رمزنگاری امن در نظر گرفت. در
احتمال اینکه یک فایل آسیب دیده همان CRC اصلی را تولید کند کم است. حساب شده
فریب کاری دشوار است، اما احتمالاً غیرممکن نیست.
اگر چه فایل های ورودی به cksum می تواند هر نوع باشد، نتایج لازم نیست آن چیزی باشد که می شود
مورد انتظار در فایلهای دستگاه ویژه کاراکتر یا انواع فایلهایی که توسط سیستم توضیح داده نشده است
حجم رابط های POSIX.1-2008. از آنجایی که این جلد از POSIX.1-2008 مشخص نمی کند
اندازه بلوک مورد استفاده در هنگام انجام ورودی، جمعبندیهای کنترلی فایلهای ویژه کاراکترها نیازی به پردازش ندارند
تمام داده های آن فایل ها
الگوریتم بر حسب جریان بیتی که به اکتت تقسیم می شود بیان می شود. اگر یک فایل است
بین دو سیستم منتقل می شود و هر گونه تغییر داده (مانند تغییر
بایت های کوچک اندین به ترتیب به بزرگ اندیان)، مقادیر CRC یکسان را نمی توان انتظار داشت.
پیاده سازی هایی که چنین تحولاتی را انجام می دهند ممکن است گسترش یابد cksum برای رسیدگی به چنین
موقعیت ها
مثال ها
ندارد.
منطقی
برنامه زبان C زیر را می توان به عنوان مدلی برای توصیف الگوریتم استفاده کرد. آی تی
فرض می کند که الف ارابه یک اکتت است. همچنین فرض میکند که کل فایل در دسترس است
یکی از تابع عبور می کند. این برای سادگی در نشان دادن انجام شد
الگوریتم، به جای یک مدل پیاده سازی.
ایستا بدون امضا طولانی crctab[] = {
0x00000000 ،
0x04c11db7، 0x09823b6e، 0x0d4326d9، 0x130476dc، 0x17c56b6b،
0x1a864db2، 0x1e475005، 0x2608edb8، 0x22c9f00f، 0x2f8ad6d6,
0x2b4bcb61، 0x350c9b64، 0x31cd86d3، 0x3c8ea00a، 0x384fbdbd،
0x4c11db70، 0x48d0c6c7, 0x4593e01e، 0x4152fda9، 0x5f15adac،
0x5bd4b01b، 0x569796c2، 0x52568b75، 0x6a1936c8، 0x6ed82b7f،
0x639b0da6، 0x675a1011، 0x791d4014، 0x7ddc5da3، 0x709f7b7a،
0x745e66cd، 0x9823b6e0، 0x9ce2ab57، 0x91a18d8e، 0x95609039 ،
0x8b27c03c، 0x8fe6dd8b، 0x82a5fb52، 0x8664e6e5، 0xbe2b5b58،
0xbaea46ef، 0xb7a96036، 0xb3687d81، 0xad2f2d84، 0xa9ee3033,
0xa4ad16ea، 0xa06c0b5d، 0xd4326d90، 0xd0f37027، 0xddb056fe،
0xd9714b49، 0xc7361b4c، 0xc3f706fb، 0xceb42022، 0xca753d95،
0xf23a8028، 0xf6fb9d9f، 0xfbb8bb46، 0xff79a6f1، 0xe13ef6f4،
0xe5ffeb43، 0xe8bccd9a، 0xec7dd02d، 0x34867077 ، 0x30476dc0،
0x3d044b19، 0x39c556ae، 0x278206ab، 0x23431b1c، 0x2e003dc5،
0x2ac12072، 0x128e9dcf، 0x164f8078، 0x1b0ca6a1, 0x1fcdbb16،
0x018aeb13، 0x054bf6a4، 0x0808d07d، 0x0cc9cdca، 0x7897ab07،
0x7c56b6b0, 0x71159069 ، 0x75d48dde، 0x6b93dddb، 0x6f52c06c،
0x6211e6b5، 0x66d0fb02، 0x5e9f46bf، 0x5a5e5b08, 0x571d7dd1،
0x53dc6066، 0x4d9b3063، 0x495a2dd4، 0x44190b0d، 0x40d816ba،
0xaca5c697، 0xa864db20, 0xa527fdf9، 0xa1e6e04e، 0xbfa1b04b،
0xbb60adfc، 0xb6238b25، 0xb2e29692، 0x8aad2b2f، 0x8e6c3698،
0x832f1041، 0x87ee0df6، 0x99a95df3، 0x9d684044، 0x902b669d،
0x94ea7b2a، 0xe0b41de7، 0xe4750050، 0xe9362689، 0xedf73b3e،
0xf3b06b3b، 0xf771768c، 0xfa325055، 0xfef34de2، 0xc6bcf05f،
0xc27dede8، 0xcf3ecb31، 0xcbffd686، 0xd5b88683، 0xd1799b34،
0xdc3abded، 0xd8fba05a، 0x690ce0ee، 0x6dcdfd59، 0x608edb80،
0x644fc637، 0x7a089632، 0x7ec98b85، 0x738aad5c، 0x774bb0eb،
0x4f040d56، 0x4bc510e1، 0x46863638 ، 0x42472b8f، 0x5c007b8a،
0x58c1663d، 0x558240e4، 0x51435d53، 0x251d3b9e، 0x21dc2629،
0x2c9f00f0, 0x285e1d47، 0x36194d42، 0x32d850f5، 0x3f9b762c،
0x3b5a6b9b, 0x0315d626، 0x07d4cb91، 0x0a97ed48، 0x0e56f0ff،
0x1011a0fa، 0x14d0bd4d، 0x19939b94، 0x1d528623، 0xf12f560e،
0xf5ee4bb9، 0xf8ad6d60، 0xfc6c70d7، 0xe22b20d2، 0xe6ea3d65،
0xeba91bbc، 0xef68060b، 0xd727bbb6، 0xd3e6a601، 0xdea580d8،
0xda649d6f، 0xc423cd6a، 0xc0e2d0dd، 0xcda1f604، 0xc960ebb3،
0xbd3e8d7e، 0xb9ff90c9، 0xb4bcb610، 0xb07daba7، 0xae3afba2،
0xaafbe615، 0xa7b8c0cc، 0xa379dd7b، 0x9b3660c6، 0x9ff77d71،
0x92b45ba8، 0x9675461f، 0x8832161a، 0x8cf30bad، 0x81b02d74،
0x857130c3، 0x5d8a9099، 0x594b8d2e، 0x5408abf7، 0x50c9b640،
0x4e8ee645، 0x4a4ffbf2، 0x470cdd2b، 0x43cdc09c، 0x7b827d21،
0x7f436096، 0x7200464f، 0x76c15bf8، 0x68860bfd، 0x6c47164a،
0x61043093 ، 0x65c52d24، 0x119b4be9، 0x155a565e، 0x18197087 ،
0x1cd86d30، 0x029f3d35، 0x065e2082، 0x0b1d065b، 0x0fdc1bec،
0x3793a651، 0x3352bbe6، 0x3e119d3f، 0x3ad08088، 0x2497d08d،
0x2056cd3a، 0x2d15ebe3، 0x29d4f654، 0xc5a92679، 0xc1683bce،
0xcc2b1d17، 0xc8ea00a0، 0xd6ad50a5، 0xd26c4d12، 0xdf2f6bcb،
0xdbee767c، 0xe3a1cbc1، 0xe760d676، 0xea23f0af، 0xeee2ed18،
0xf0a5bd1d، 0xf464a0aa، 0xf9278673، 0xfde69bc4، 0x89b8fd09،
0x8d79e0be، 0x803ac667، 0x84fbdbd0، 0x9abc8bd5، 0x9e7d9662،
0x933eb0bb، 0x97ffad0c، 0xafb010b1، 0xab710d06، 0xa6322bdf،
0xa2f33668، 0xbcb4666d، 0xb8757bda، 0xb5365d03، 0xb1f740b4
};
memcrc طولانی بدون علامت (const char بدون علامت *b، size_t n)
{
/* آرگومان های ورودی:
* char بدون علامت * b == دنباله بایت به جمع کنترلی
* size_t n == طول دنباله
*/
ثبت نام size_t i;
ثبت بدون علامت c, s = 0;
برای (i = n؛ i > 0؛ −−i) {
c = *b++;
s = (s << 8) ^ crctab[(s >> 24) ^ c];
}
/* با طول رشته تمدید کنید. */
در حالی که (n != 0) {
c = n & 0377;
n >>= 8;
s = (s << 8) ^ crctab[(s >> 24) ^ c];
}
بازگشت ~s;
}
رویه تاریخی نوشتن تعداد «بلوک» به نوشتار تغییر کرده است
تعداد اکتت ها، زیرا دومی نه تنها مفیدتر است، بلکه از نظر تاریخی نیز مفید است
پیاده سازی ها در تعریف معنای «بلوک» سازگار نبوده اند.
الگوریتم مورد استفاده برای افزایش استحکام عملیاتی انتخاب شد cksum. نه نه
سیستم V یا BSD مجموع الگوریتم انتخاب شد از آنجایی که هر کدام از اینها متفاوت بود و
هر یک رفتار پیشفرض در آن سیستمها بود، هیچ مصالحه واقعی در دسترس نبود
هرکدام انتخاب شدند—برخی از برنامه های تاریخی شکسته می شوند. بنابراین، نام
به تغییر یافت cksum. اگرچه تاریخی مجموع دستورات احتمالاً ادامه خواهند داشت
ارائه شده برای چندین سال، برنامه های طراحی شده برای قابلیت حمل در سراسر سیستم ها باید از آن استفاده کنند
نام جدید
الگوریتم انتخاب شده بر اساس الگوریتم استفاده شده توسط استاندارد ISO/IEC 8802-3:1996 است.
(اترنت) برای فیلد ترتیب بررسی فریم. الگوریتم استفاده شده با آن مطابقت ندارد
تعریف فنی الف چکمه; این اصطلاح به دلایل تاریخی استفاده می شود. طول از
این فایل در محاسبه CRC گنجانده شده است زیرا این درج یک طول را موازی می کند
میدان توسط اترنت در CRC آن، بلکه به این دلیل که در برابر برخوردهای غیرعمدی محافظت می کند
بین فایل هایی که با سری های مختلف اکتت صفر شروع می شوند. شانس آن دو
فایل های مختلف CRC های یکسان تولید می کنند، زمانی که طول آنها نباشد، بسیار بیشتر است
در نظر گرفته شده. جدا نگه داشتن طول و جمع کنترلی خود فایل، یک نتیجه را به همراه خواهد داشت
الگوریتم کمی قوی تر است، اما استفاده تاریخی همیشه یک عدد واحد بوده است
(چک جمع به صورت چاپ شده) نشان دهنده امضای فایل است. تصمیم گرفته شد که
استفاده تاریخی مهمتر از آن بود.
پیشنهادات اولیه شامل تغییراتی در الگوریتم اترنت بود که شامل استخراج بود
مقادیر جدول هر زمان که یک نتیجه میانی صفر شد. این کمتر نشان داده شد
قوی تر از روش فعلی و از نظر ریاضی توصیف یا توجیه آن دشوار است.
محاسبه استفاده شده با محاسبه ای که در شبه کد در Sarwate ارجاع داده شده یکسان است
مقاله. تفسیر شبه کد این است:
X <- 0; Y <- 0;
برای i <- m -1 گام -1 تا 0 do
شروع
T <- X(1) ^ A[i]؛
X(1) <- X(0)؛ X(0) <- Y(1)؛ Y(1) <- Y(0)؛ Y(0) <- 0;
چگونه؟ یا 'چه: f[T] و f'[T] مشخص کن la T-th کلمات in la
جدول f و f' ;
X <- X ^ f[T]; Y <- Y ^ f'[T];
پایان
شبه کد دقیقاً همانطور که داده شده است بازتولید می شود. با این حال، توجه داشته باشید که در مورد cksum,
A[i] یک بایت از فایل، کلمات را نشان می دهد X و Y به عنوان یک 32 بیتی در نظر گرفته می شوند
ارزش و جداول f و f' یک جدول واحد حاوی مقادیر 32 بیتی هستند.
مقاله ارجاع شده Sarwate همچنین در مورد ایجاد جدول بحث می کند.
آینده جهت
ندارد.
با استفاده از خدمات onworks.net از cksumposix آنلاین استفاده کنید