CryptoHashBase.swift 854 B

123456789101112131415161718192021222324252627282930313233
  1. //
  2. // Hash.swift
  3. // CryptoSwift
  4. //
  5. // Created by Marcin Krzyzanowski on 17/08/14.
  6. // Copyright (c) 2014 Marcin Krzyzanowski. All rights reserved.
  7. //
  8. import Foundation
  9. class HashBase {
  10. var message: NSData
  11. init(_ message: NSData) {
  12. self.message = message
  13. }
  14. /** Common part for hash calculation. Prepare header data. */
  15. func prepare(_ len:Int = 64) -> NSMutableData {
  16. var tmpMessage: NSMutableData = NSMutableData(data: self.message)
  17. // Step 1. Append Padding Bits
  18. tmpMessage.appendBytes([0x80]) // append one bit (Byte with one bit) to message
  19. // append "0" bit until message length in bits ≡ 448 (mod 512)
  20. while tmpMessage.length % len != (len - 8) {
  21. tmpMessage.appendBytes([0x00])
  22. }
  23. return tmpMessage
  24. }
  25. }