瀏覽代碼

Added ability to seed the CRC

Rich Lowenberg 10 年之前
父節點
當前提交
8c77cdbe50
共有 1 個文件被更改,包括 4 次插入4 次删除
  1. 4 4
      CryptoSwift/CRC.swift

+ 4 - 4
CryptoSwift/CRC.swift

@@ -74,8 +74,8 @@ final class CRC {
         0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641,
         0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040]
     
-    func crc32(message:[UInt8]) -> UInt32 {
-        var crc:UInt32 = 0xffffffff
+    func crc32(message:[UInt8], seed: UInt32 = 0xffffffff) -> UInt32 {
+        var crc:UInt32 = seed
         
         for chunk in BytesSequence(chunkSize: 256, data: message) {
             for b in chunk {
@@ -86,8 +86,8 @@ final class CRC {
         return crc ^ 0xffffffff
     }
     
-    func crc16(message:[UInt8]) -> UInt16 {
-        var crc:UInt16 = 0x0000
+    func crc16(message:[UInt8], seed: UInt16 = 0x0000) -> UInt16 {
+        var crc:UInt16 = seed
         for chunk in BytesSequence(chunkSize: 256, data: message) {
             for b in chunk {
                 crc = (crc >> 8) ^ CRC.table16[Int((crc ^ UInt16(b)) & 0xFF)]