PBKDF.swift 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. //
  2. // PBKDF.swift
  3. // CryptoSwift
  4. //
  5. // Created by Marcin Krzyzanowski on 04/04/16.
  6. // Copyright © 2016 Marcin Krzyzanowski. All rights reserved.
  7. //
  8. import XCTest
  9. @testable import CryptoSwift
  10. class PBKDF: XCTestCase {
  11. func testPBKDF1() {
  12. let password: Array<UInt8> = [0x70,0x61,0x73,0x73,0x77,0x6F,0x72,0x64]
  13. let salt: Array<UInt8> = [0x78,0x57,0x8E,0x5A,0x5D,0x63,0xCB,0x06]
  14. let value = try! PKCS5.PBKDF1(password: password, salt: salt, iterations: 1000, keyLength: 16).calculate()
  15. XCTAssertEqual(value.toHexString(), "dc19847e05c64d2faf10ebfb4a3d2a20")
  16. }
  17. func testPBKDF2() {
  18. let password: Array<UInt8> = "s33krit".utf8.map {$0}
  19. let salt: Array<UInt8> = "nacl".utf8.map {$0}
  20. let value = try! PKCS5.PBKDF2(password: password, salt: salt, iterations: 2, keyLength: 140, variant: .sha1).calculate()
  21. XCTAssert(value.toHexString() == "a53cf3df485e5cd91c17c4978048e3ca86e03cced5f748fb55eff9c1edfce7f9f490c0beee768b85c1ba14ec5750cf059fea52565ffd9e4f9dba01c5c953955e7f1012b6a9eb40629ce767982e598df9081048e22781b35187c16d61ac43f69b88630a9e80233b4c58bdc74ea5c06b5bb1b2c2a86e3ddc2775b852c4508ac85a6a47c0e23a3d8dc6e4dca583", "PBKDF2 fail")
  22. }
  23. func testPBKDF2Length() {
  24. let password: Array<UInt8> = "s33krit".utf8.map {$0}
  25. let salt: Array<UInt8> = "nacl".utf8.map {$0}
  26. let value = try! PKCS5.PBKDF2(password: password, salt: salt, iterations: 2, keyLength: 8, variant: .sha1).calculate()
  27. XCTAssert(value.toHexString() == "a53cf3df485e5cd9", "PBKDF2 fail")
  28. }
  29. static let allTests = [
  30. ("testPBKDF1", testPBKDF1),
  31. ("testPBKDF2", testPBKDF2),
  32. ("testPBKDF2Length", testPBKDF2Length)
  33. ]
  34. }