CryptoHashBase.swift 928 B

123456789101112131415161718192021222324252627282930313233343536
  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. if (self.message.length == 0) {
  14. return nil
  15. }
  16. }
  17. /** Common part for hash calculation. Prepare header data. */
  18. func prepare(_ len:Int = 64) -> NSMutableData {
  19. var tmpMessage: NSMutableData = NSMutableData(data: self.message)
  20. // Step 1. Append Padding Bits
  21. tmpMessage.appendBytes([0x80]) // append one bit (Byte with one bit) to message
  22. // append "0" bit until message length in bits ≡ 448 (mod 512)
  23. while tmpMessage.length % len != (len - 8) {
  24. tmpMessage.appendBytes([0x00])
  25. }
  26. return tmpMessage
  27. }
  28. }