crc32とは? わかりやすく解説

crc32

(PHP 4 >= 4.0.1, PHP 5)
crc32 — 文字列の crc32 多項式計算を行う

説明

int crc32 ( string str )
strの32ビット長のCRC(cyclic redundancy checksum)チェックサムを生成します。これは、受信されたデータの整合 性を検証するために通常使用されます。
なぜなら、PHP の整数型は符号付きで、多くの crc32 チェックサムは負の整数になるためで、符号なしの crc32 チェックサムの文字列表記を取得するには sprintf() もしくは printf() の "%u" フォーマッタを使用する必要があります。
この 2 番目の例は printf() 関数を用いた変換後のチェックサムの表示方法を示しています。 例 2256. crc32 チェックサムの表示
<?php
$checksum = crc32("The quick brown fox jumped over the lazy dog.");
printf("%u\n", $checksum);
?>


md5(), sha1() も参照ください。

巡回冗長検査

(crc32 から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/06/28 04:58 UTC 版)

巡回冗長検査(じゅんかいじょうちょうけんさ、: Cyclic Redundancy Check, CRC)は、誤り検出符号の一種で、主にデータ転送などに伴う偶発的な誤りの検出によく使われている。送信側は定められた生成多項式で除算した余りを検査データとして付加して送信し、受信側で同じ生成多項式を使用してデータを除算し、その余りを比較照合することによって受信データの誤り・破損を検出する。


  1. ^ Peterson, W. W. and Brown, D. T. (1961-1). “Cyclic Codes for Error Detection”. Proceedings of the IRE 49: 228. doi:10.1109/JRPROC.1961.287814. ISSN 0096-8390. 
  2. ^ a b Brayer, K; Hammond, J L Jr. (1975). "Evaluation of error detection polynomial performance on the AUTOVON channel". Conference Record. National Telecommunications Conference, New Orleans, La. 1. New York: Institute of Electrical and Electronics Engineers. pp. 8-21 to 8-25.
  3. ^ (slib) Cyclic Checksum”. 2008年4月6日閲覧。
  4. ^ Greg Cook (2008年9月9日). “Catalogue of parameterised CRC algorithms”. 2008年9月9日閲覧。
  5. ^ a b c Koopman, Philip; Chakravarty, Tridib (2004年), Cyclic Redundancy Code (CRC) Polynomial Selection For Embedded Networks, http://www.ece.cmu.edu/~koopman/roses/dsn04/koopman04_crc_poly_embedded.pdf 
  6. ^ Castagnoli, G. and Braeuer, S. and Herrman, M. (1993-6). “Optimization of Cyclic Redundancy-Check Codes with 24 and 32 Parity Bits”. IEEE Transactions on Communications 41 (6): 883. doi:10.1109/26.231911. ISSN 0090-6778.  - Castagnoli's et al. CRC多項式のアルゴリズム選択に関する研究
  7. ^ a b c d e f Koopman, P. (2002-6). “32-Bit Cyclic Redundancy Codes for Internet Applications”. The International Conference on Dependable Systems and Networks: 459. doi:10.1109/DSN.2002.1028931. http://citeseer.ist.psu.edu/koopman02bit.html.  - Castagnoli の結果を総当り探索で検証し、新たによい多項式を発見した。
  8. ^ Perez, A.; Wismer & Becker (1983年). “Byte-Wise CRC Calculations”. IEEE Micro 3 (3): 40–50. doi:10.1109/MM.1983.291120. ISSN 0272-1732. 
  9. ^ Ramabadran, T.V.; Gaitonde, S.S. (1988年). “A tutorial on CRC computations”. IEEE Micro 8 (4): 62-75. doi:10.1109/40.7773. ISSN 0272-1732. 
  10. ^ Thomas Boutell, Glenn Randers-Pehrson, et al. (1998年7月14日). “PNG (Portable Network Graphics) Specification, Version 1.2”. 2008年4月28日閲覧。


「巡回冗長検査」の続きの解説一覧

CRC-32

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/03/05 03:09 UTC 版)

巡回冗長検査」の記事における「CRC-32」の解説

C言語での実装例RFC 1952 (gzip) や RFC 2083 (PNG) の末尾にも実装例載っている。zlib などにも含まれている。 uint32_t crc_table[256];void make_crc_table(void) { for (uint32_t i = 0; i < 256; i++) { uint32_t c = i; for (int j = 0; j < 8; j++) { c=(c & 1) ? (0xEDB88320 ^ (c>> 1)) : (c >> 1); } crc_table[i] = c; }}uint32_t crc32(uint8_t *buf, size_t len) { uint32_t c = 0xFFFFFFFF; for (size_t i = 0; i < len; i++) { c=crc_table[(c ^ buf[i]) & 0xFF] ^ (c>> 8); } return c ^ 0xFFFFFFFF;}int main(void){ make_crc_table(); uint32_t crc = crc32(); return 0;} 生成多項式反転させない場合実装例。 uint32_t crc_table[256];/* 事前にこの関数実行しておくこと */void make_crc_table(void){ for(uint32_t i=0; i<256; i++){ uint32_t c = i << 24; for( int j=0; j<8; j++){ c = ( c << 1) ^ ( ( c & 0x80000000) ? 0x04C11DB7 : 0); } crc_table[i] = c; }}uint32_t crc32(uint8_t *buf, int len){ uint32_t c = 0xffffffff; for (int i = 0; i < len; i++) { c = (c << 8) ^ crc_table[((c>> 24) ^ buf[i]) & 0xff]; } return c;}

※この「CRC-32」の解説は、「巡回冗長検査」の解説の一部です。
「CRC-32」を含む「巡回冗長検査」の記事については、「巡回冗長検査」の概要を参照ください。

ウィキペディア小見出し辞書の「crc32」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



固有名詞の分類


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「crc32」の関連用語

crc32のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



crc32のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
PHP Documentation GroupPHP Documentation Group
Copyright © 1997 - 2024 by the PHP Documentation Group.
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアの巡回冗長検査 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaの巡回冗長検査 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2024 GRAS Group, Inc.RSS