跳至內容
主選單
主選單
移至側邊欄
隱藏
導覽
首頁
近期變更
隨機頁面
MediaWiki說明
Taiwan Tongues 台語維基
搜尋
搜尋
外觀
建立帳號
登入
個人工具
建立帳號
登入
檢視 Adler鋪三十二 的原始碼
頁面
討論
臺灣正體
閱讀
檢視原始碼
檢視歷史
工具
工具
移至側邊欄
隱藏
操作
閱讀
檢視原始碼
檢視歷史
一般
連結至此的頁面
相關變更
特殊頁面
頁面資訊
外觀
移至側邊欄
隱藏
←
Adler鋪三十二
由於以下原因,您無權編輯此頁面:
您請求的操作只有這些群組的使用者能使用:
使用者
、taigi-reviewer、apibot
您可以檢視並複製此頁面的原始碼。
'''Adler 鋪三十二'''是一種校驗演算法,由馬克 ・ 阿德勒佇一九九五年發明,是嘿 Fletcher 校驗的一種改進。佮長度的迴箍傷長的校驗相比,伊這有可靠性來換取速度(閣較傾向後者)。 Adler 鋪三十二比 Fletcher 鋪十六更加可靠,比 Fletcher 鋪三十二可靠性小差。 ==歷史== Adler 學三十二校驗佮是廣泛使用的 zlib 壓縮庫的一部份,因為兩个攏是由馬克 ・ 阿德勒開發的。佇咧 rsync 工具內底使用矣 Adler 抹三十二的「踅踅雜鬥」版本。 ==演算法== Adler 鋪三十二校驗佮是通過計算兩个十六位元的校驗佮 _ A _ 和 _ B _,並且共𪜶的位連做一个三十二位元整數來得著的。_ A _ 是流中所有一个元組的總和加一,而且 _ B _ 是每一步驟中 _ A _ 的各个值的總和。 佇咧 Adler 抹三十二執行開始的時,_ A _ 予人初初化做一,_ B _ 為零。以模六馮五千五百二十一(小於兩百十六的上大質數)進行求和。位元組以網路順序儲存(位元組序), _ B _ 占領上懸的兩个位元組。 該函式會當表示為 ` ` ` _ A _=一 + _ D _ 一 + _ D _ 二 + . . . + _ D _ n ( mod 六嬸五千五百二十一 ) _ B _=( 一 + _ D _ 一 ) + ( 一 + _ D _ 一 + _ D _ 二 ) + . . . + ( 一 + _ D _ 一 + _ D _ 二 + . . . + _ D _ n ) ( mod 六嬸五千五百二十一 ) =_ n _ × _ D _ 一 + ( _ n _ − 一 ) × _ D _ 二 + ( _ n _ − 二 ) × _ D _ 三 + . . . + _ D _ n + _ n _ ( mod 六嬸五千五百二十一 ) _ Adler 鋪三十二 _ ( _ D _ )=_ B _ × 六嬸五千五百三十六 + _ A _ ` ` ` 其中 _ D _ 是欲計算校驗佮的位元組串,_ n _ 是 _ D _ 的長度。 ==範例== ASCII 字捾「` Wikipedia `」的 Adler 鋪三十二校驗佮計算如下: ` ` ` A=九百二十=零 x 三百九十八 ( 十六進位 ) B=四千五百八十二=零 x 十一 E 六輸出=零 x 十一 E 六 < < 十六 + 零 x 三百九十八=零 x 十一 E 六桱空三百九十八 ` ` ` 佇這个例中,取模運算無效果,因為無一个值達到六石五千五百二十一。 ==佮 Fletcher 校驗佮的較== 兩種演算法之間的第一个區別,是 Adler 鋪三十二和是以一个質數為模數計算的,而且 Fletcher 佮是以二十四孵一、二十八孵一抑是兩百十六孵一為模(攏著愛看所使用的位數)為模數算的,𪜶攏是複合數。使用質數予得 Adler 抹三十二會用得揣著 Fletcher 無法度檢測著的某一寡位元組合中的差異。 第二个區別,嘛是對演算法的速度影響上大的區別,是 Adler 佮八位元的位元組頂懸算的,毋是十六位元的字上,迵天天次數增加一倍。這愛對十六位元字對齊資料,Adler 鋪三十二校驗佮開的時間是 Fletcher 校驗佮的一人五倍到二倍。對位元組對齊的資料,Adler 鋪三十二比正確實現的 Fletcher 的校驗佮(比如講,HDF 中的實現)要緊。 ==實現範例== 佇咧 C 語言內底,一个低效但是直接的實現方式是: 請參閱 zlib 原始碼,了解閣較有效的實現,伊需要對逐个位元組來進行一擺的取數和兩擺的加法,模數運算延後,並每隔幾千个位元組計算兩改的數,這種技術上早是佇一九八八年予人發現用於 Fletcher 校驗。` js-adler 三十二 ` 嘛提供類似的最佳化,增加一个技巧,即推遲計算六馮五千五百三十六馮六馮五千五百二十一當著的「十五」,按呢模數運算就會變閣較緊:會當證明 ` ( ( a > > 十六 ) * 十五 + ( a & 六嬸五千五百三十五 ) ) % 六嬸五千五百二十一 ` 比較是簡單的積累。 ==優點佮缺點== * 佮標準 CRC 炕三十二仝款,Adler 鋪三十二校驗佮真容易假造,因此佇咧防止故意修改方面是無安全的。 * 佇真濟平台頂,伊攏比 CRC 鋪三十二閣較緊。 * Adler 枋三十二對於干焦幾百个位元組的簡訊方面有一个弱點,因為這類訊息的校驗佮對三十二个會當用位的崁率是足低的。 ==較弱點== 對簡訊來講,Adler 抹三十二是足弱的,因為總和 _ A _ 袂曉轉踅(英語:Wrap,即整數溢了後的處理)。 一百二十八个元組訊息的上大是三分之一二千六百四十,低於取模操作所使用的值六增五千五百二十一,意味注文大約有一半的輸出空間無使用,並且使用部份內底的分布嘛是無齊勻。延伸的解說會當佇 RFC 三千三百空九中揣著,伊規定流控制傳輸協定 SCTP 使用 CRC 三十二 C 毋是 Adler 鋪三十二。對較細的增量更改,Adler 炕三十二嘛予人證明變化足弱的,並且對一个共同的字首佮連紲的數字生的字串嘛足弱的(譬如講由典型碼產生器自動生成的標籤名)。 ==參見== * 雜鬥函式列表 ==註跤== ==外部連結== * RFC 一千九百五十–規範,包含範例 C 代碼 * ZLib–佇咧 adler 三十二 . c 中實現矣 Adler 抹三十二演算法 * Chrome–佇咧 adler 三十二 \ _ simd . c 中使用 SIMD 實現的 Adler 抹三十二演算法 * RFC 三千三百空九–有關係簡訊弱點佮 SCTP 相關改做的資訊 [[分類: 待校正]]
返回到「
Adler鋪三十二
」。