cksumposix - Trực tuyến trên đám mây

Đây là lệnh cksumposix có thể được chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình giả lập trực tuyến MAC OS

CHƯƠNG TRÌNH:

TÊN


cksum - ghi tổng kiểm tra và kích thước tệp

SYNOPSIS


cksum [hồ sơhữu ích. Cảm ơn !]

MÔ TẢ


Sản phẩm cksum tiện ích sẽ tính toán và ghi vào đầu ra tiêu chuẩn một kiểm tra dự phòng theo chu kỳ
(CRC) cho mỗi tệp đầu vào và cũng ghi vào đầu ra tiêu chuẩn số octet trong mỗi tệp
tập tin. CRC được sử dụng dựa trên đa thức được sử dụng để kiểm tra lỗi CRC trong
Tiêu chuẩn ISO / IEC 8802‐3: 1996 (Ethernet).

Mã hóa cho tổng kiểm tra CRC được xác định bởi đa thức tạo:

G(x)=x32 +x26 +x23 +x22 +x16 +x12 +x11 +x10 +x8+x7+x5+x4+x2+x+1

Về mặt toán học, giá trị CRC tương ứng với một tệp nhất định sẽ được xác định bởi
thủ tục sau:

1. Các n các bit được đánh giá được coi là hệ số của đa thức mod 2
M(x) của mức độ n−1. Này n bit là các bit từ tệp, với hầu hết
bit quan trọng là bit quan trọng nhất của octet đầu tiên của tệp và
bit cuối cùng là bit ít quan trọng nhất của octet cuối cùng, được đệm bằng các bit XNUMX (nếu
cần thiết) để đạt được số octet tích phân, theo sau là một hoặc nhiều octet
đại diện cho độ dài của tệp dưới dạng giá trị nhị phân, octet nhỏ nhất có ý nghĩa đầu tiên.
Số octet nhỏ nhất có thể biểu diễn số nguyên này sẽ được sử dụng.

2. M(x) được nhân với x32 (nghĩa là đã dịch sang trái 32 bit) và chia cho G(x) sử dụng
mod 2 chia, tạo ra một phần còn lại R(x) của độ ≤ 31.

3. Các hệ số của R(x) được coi là một chuỗi 32 bit.

4. Chuỗi bit được bổ sung và kết quả là CRC.

LỰA CHỌN


Không có.

TOÁN HẠNG


Toán hạng sau sẽ được hỗ trợ:

hồ sơ Tên đường dẫn của tệp được kiểm tra. Nếu không hồ sơ toán hạng được chỉ định,
đầu vào tiêu chuẩn sẽ được sử dụng.

STDIN


Đầu vào tiêu chuẩn sẽ được sử dụng nếu không hồ sơ toán hạng được chỉ định và sẽ được sử dụng nếu
hồ sơ toán hạng là '-' và việc triển khai xử lý '-' như nghĩa là đầu vào tiêu chuẩn.
Nếu không, đầu vào chuẩn sẽ không được sử dụng. Xem phần INPUT FILES.

ĐẦU VÀO CÁC TẬP TIN


Các tệp đầu vào có thể là bất kỳ loại tệp nào.

MÔI TRƯỜNG BIẾN


Các biến môi trường sau đây sẽ ảnh hưởng đến việc thực hiện cksum:

NGÔN NGỮ Cung cấp giá trị mặc định cho các biến quốc tế hóa chưa được đặt hoặc
vô giá trị. (Xem tập Định nghĩa cơ bản của POSIX.1‐2008, Phần 8.2,
quốc tế hóa Biến ưu tiên quốc tế hóa
các biến được sử dụng để xác định giá trị của danh mục ngôn ngữ.)

LC_ALL Nếu được đặt thành giá trị chuỗi không trống, hãy ghi đè giá trị của tất cả các chuỗi khác
các biến quốc tế hóa.

LC_CTYPE Xác định ngôn ngữ để diễn giải chuỗi byte dữ liệu văn bản
dưới dạng ký tự (ví dụ: byte đơn trái ngược với ký tự nhiều byte trong
tranh luận).

LC_MESSAGES
Xác định ngôn ngữ sẽ được sử dụng để ảnh hưởng đến định dạng và nội dung của
thông báo chẩn đoán được ghi vào lỗi tiêu chuẩn.

NLSPATH Xác định vị trí của danh mục thư để xử lý LC_MESSAGES.

BẤT NGỜ SỰ KIỆN


Mặc định.

GIỚI THIỆU


Đối với mỗi tệp được xử lý thành công, cksum tiện ích sẽ viết như sau
định dạng:

"% u %d % s \ n ", <checksum>,# of bộ tám>,tên đường dẫn>

Nếu không hồ sơ toán hạng đã được chỉ định, tên đường dẫn và hàng đầu của nó sẽ được bỏ qua.

STDERR


Lỗi chuẩn chỉ được sử dụng cho các thông báo chẩn đoán.

OUTPUT CÁC TẬP TIN


Không có.

ĐA THẾ HỆ MÔ TẢ


Không có.

EXIT TÌNH TRẠNG


Các giá trị thoát sau sẽ được trả về:

0 Tất cả các tệp đã được xử lý thành công.

> 0 Đã xảy ra lỗi.

HẬU QUẢ OF LRI


Mặc định.

Sản phẩm tiếp theo phần đang nhiều thông tin.

ỨNG DỤNG SỬ DỤNG


Sản phẩm cksum tiện ích thường được sử dụng để nhanh chóng so sánh một tệp nghi ngờ với một tệp đáng tin cậy
phiên bản giống nhau, chẳng hạn như để đảm bảo rằng các tệp được truyền qua phương tiện ồn ào sẽ đến
còn nguyên vẹn. Tuy nhiên, sự so sánh này không thể được coi là an toàn về mặt mật mã. Các
khả năng một tệp bị hỏng tạo ra CRC giống như tệp gốc là rất nhỏ; cố ý
lừa dối rất khó, nhưng có lẽ không phải là không thể.

Mặc dù đầu vào các tập tin vào cksum có thể là bất kỳ loại nào, kết quả không cần phải như thế nào
mong đợi trên các tệp thiết bị có ký tự đặc biệt hoặc trên các loại tệp không được Hệ thống mô tả
Khối lượng giao diện của POSIX.1‐2008. Vì tập POSIX.1‐2008 này không chỉ định
kích thước khối được sử dụng khi thực hiện đầu vào, tổng kiểm tra của các tệp ký tự đặc biệt không cần xử lý
tất cả dữ liệu trong các tệp đó.

Thuật toán được thể hiện dưới dạng một dòng bit được chia thành các octet. Nếu một tập tin là
được truyền giữa hai hệ thống và trải qua bất kỳ quá trình chuyển đổi dữ liệu nào (chẳng hạn như thay đổi
thứ tự byte little-endian thành big-endian), không thể mong đợi các giá trị CRC giống hệt nhau.
Việc triển khai thực hiện các phép biến đổi như vậy có thể mở rộng cksum để xử lý như vậy
tình huống.

VÍ DỤ


Không có.

CƠ SỞ LÝ LUẬN


Chương trình ngôn ngữ C sau đây có thể được sử dụng như một mô hình để mô tả thuật toán. Nó
giả định rằng một xe tăng là một octet. Nó cũng giả định rằng toàn bộ tệp có sẵn cho
một qua chức năng. Điều này được thực hiện vì sự đơn giản trong việc chứng minh
thuật toán, chứ không phải là một mô hình triển khai.

tĩnh unsigned Dài 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, 0x8cf30xấu, 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 dài unsigned (const unsigned char * b, size_t n)
{
/ * Đối số đầu vào:
* const unsigned char * b == chuỗi byte đến tổng kiểm tra
* size_t n == độ dài của chuỗi
*/

đăng ký size_t i;
đăng ký không dấu c, s = 0;

for (i = n; i> 0; −−i) {
c = * b ++;
s = (s << 8) ^ crctab [(s >> 24) ^ c];
}

/ * Kéo dài với độ dài của chuỗi. * /
trong khi (n! = 0) {
c = n & 0377;
n >> = 8;
s = (s << 8) ^ crctab [(s >> 24) ^ c];
}

trả lại ~ s;
}

Thực tiễn lịch sử về cách viết số `` khối '' đã được thay đổi thành cách viết
số lượng octet, vì sau này không chỉ hữu ích hơn mà còn vì lịch sử
triển khai không nhất quán trong việc xác định nghĩa của một `` khối ''.

Thuật toán được sử dụng đã được chọn để tăng cường hoạt động của cksum. Cũng không
Hệ thống V hoặc BSD tổng hợp thuật toán đã được chọn. Vì mỗi cái đều khác nhau và
mỗi hành vi đều là hành vi mặc định trên các hệ thống đó, không có sự thỏa hiệp thực tế nào khả dụng nếu
hoặc đã được chọn — một số tập hợp các ứng dụng lịch sử sẽ bị hỏng. Do đó, tên
đã được đổi thành cksum. Mặc dù lịch sử tổng hợp các lệnh có thể sẽ tiếp tục
được cung cấp trong nhiều năm, các chương trình được thiết kế để có thể di động qua các hệ thống nên sử dụng
tên mới.

Thuật toán được chọn dựa trên thuật toán được sử dụng bởi tiêu chuẩn ISO / IEC 8802‐3: 1996
(Ethernet) cho trường trình tự kiểm tra khung. Thuật toán được sử dụng không khớp với
định nghĩa kỹ thuật của một checksum; thuật ngữ này được sử dụng vì lý do lịch sử. Chiều dài của
tệp được bao gồm trong phép tính CRC vì điều này song song với việc bao gồm độ dài
trường bằng Ethernet trong CRC của nó, mà còn vì nó bảo vệ khỏi các va chạm vô ý
giữa các tệp bắt đầu bằng các chuỗi octet bằng XNUMX khác nhau. Cơ hội mà hai
các tệp khác nhau tạo ra các CRC giống hệt nhau sẽ lớn hơn nhiều khi độ dài của chúng không
được xem xét. Giữ độ dài và tổng tổng của tệp riêng biệt sẽ mang lại
thuật toán mạnh mẽ hơn một chút, nhưng việc sử dụng trước đây luôn là một con số duy nhất
(tổng kiểm tra như được in) đại diện cho chữ ký của tệp. Nó đã được quyết định rằng
việc sử dụng lịch sử là yếu tố quan trọng hơn được xem xét.

Các đề xuất ban đầu bao gồm các sửa đổi đối với thuật toán Ethernet liên quan đến việc trích xuất
giá trị bảng bất cứ khi nào kết quả trung gian trở thành XNUMX. Điều này đã được chứng minh là ít hơn
mạnh hơn phương pháp hiện tại và khó mô tả hoặc biện minh về mặt toán học.

Phép tính được sử dụng giống với phép tính được đưa ra trong mã giả trong Sarwate được tham chiếu
bài báo. Hiển thị mã giả là:

X <- 0; Y <- 0;
cho i <- m -1 bước -1 cho đến khi 0 do
bắt đầu
T <- X(1) ^ A [i];
X(1) <- X(0); X(0) <- Y(1); Y(1) <- Y(0); Y(0) <- 0;
nhận xét: f [T] f '[T] chứng tỏ các thứ-th từ in các
bàn f f' ;
X <- X ^ f [T]; Y <- Y ^ f '[T];
cuối

Mã giả được sao chép chính xác như đã cho; tuy nhiên, lưu ý rằng trong trường hợp cksum,
A [i] đại diện cho một byte của tệp, các từ XY được coi là một 32-bit duy nhất
giá trị và các bảng ff' là một bảng đơn chứa các giá trị 32 bit.

Bài báo Sarwate được tham chiếu cũng thảo luận về việc tạo bảng.

TƯƠNG LAI HƯỚNG DẪN


Không có.

Sử dụng cksumposix trực tuyến bằng các dịch vụ onworks.net



Các chương trình trực tuyến Linux & Windows mới nhất