mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-01-06 05:04:10 +00:00
267 lines
55 KiB
Plaintext
267 lines
55 KiB
Plaintext
|
# The|dkLen| parameter is given implicitly as the length of |DK|.
|
||
|
|
||
|
# PBKDF2 HMAC-SHA256 Test Vectors from
|
||
|
# https://stackoverflow.com/questions/5130513/pbkdf2-hmac-sha2-test-vectors
|
||
|
|
||
|
Hash = SHA256
|
||
|
P = "password"
|
||
|
S = "salt"
|
||
|
c = 1
|
||
|
DK = 120fb6cffcf8b32c43e7225256c4f837a86548c92ccc35480805987cb70be17b
|
||
|
Verify = OK
|
||
|
|
||
|
Hash = SHA256
|
||
|
P = "password"
|
||
|
S = "salt"
|
||
|
c = 2
|
||
|
DK = ae4d0c95af6b46d32d0adff928f06dd02a303f8ef3c251dfd6e2d85a95474c43
|
||
|
Verify = OK
|
||
|
|
||
|
Hash = SHA256
|
||
|
P = "password"
|
||
|
S = "salt"
|
||
|
c = 4096
|
||
|
DK = c5e478d59288c841aa530db6845c4c8d962893a001ce4e11a4963873aa98134a
|
||
|
Verify = OK
|
||
|
|
||
|
# Skipped because of the large number of iterations and the amount of time
|
||
|
# it would add to the test suite.
|
||
|
# Hash = SHA256
|
||
|
# P = "password"
|
||
|
# S = "salt"
|
||
|
# c = 16777216
|
||
|
# DK = cf81c66fe8cfc04d1f31ecb65dab4089f7f179e89b3b0bcb17ad10e3ac6eba46
|
||
|
# Verify = OK
|
||
|
|
||
|
Hash = SHA256
|
||
|
P = "passwordPASSWORDpassword"
|
||
|
S = "saltSALTsaltSALTsaltSALTsaltSALTsalt"
|
||
|
c = 4096
|
||
|
DK = 348c89dbcbd32b2f32d814b8116e84cf2b17347ebc1800181c4e2a1fb8dd53e1c635518c7dac47e9
|
||
|
Verify = OK
|
||
|
|
||
|
# P is "pass\0word" S is "sa\0lt"
|
||
|
Hash = SHA256
|
||
|
P = 7061737300776f7264
|
||
|
S = 7361006c74
|
||
|
c = 4096
|
||
|
DK = 89b69d0516f829893c696226650a8687
|
||
|
Verify = OK
|
||
|
|
||
|
# PBKDF2 HMAC-SHA512 Test Vectors from
|
||
|
# https://stackoverflow.com/questions/15593184/pbkdf2-hmac-sha-512-test-vectors
|
||
|
|
||
|
Hash = SHA512
|
||
|
P = "password"
|
||
|
S = "salt"
|
||
|
c = 1
|
||
|
DK = 867f70cf1ade02cff3752599a3a53dc4af34c7a669815ae5d513554e1c8cf252c02d470a285a0501bad999bfe943c08f050235d7d68b1da55e63f73b60a57fce
|
||
|
Verify = OK
|
||
|
|
||
|
Hash = SHA512
|
||
|
P = "password"
|
||
|
S = "salt"
|
||
|
c = 2
|
||
|
DK = e1d9c16aa681708a45f5c7c4e215ceb66e011a2e9f0040713f18aefdb866d53cf76cab2868a39b9f7840edce4fef5a82be67335c77a6068e04112754f27ccf4e
|
||
|
Verify = OK
|
||
|
|
||
|
Hash = SHA512
|
||
|
P = "password"
|
||
|
S = "salt"
|
||
|
c = 4096
|
||
|
DK = d197b1b33db0143e018b12f3d1d1479e6cdebdcc97c5c0f87f6902e072f457b5143f30602641b3d55cd335988cb36b84376060ecd532e039b742a239434af2d5
|
||
|
Verify = OK
|
||
|
|
||
|
Hash = SHA512
|
||
|
P = "passwordPASSWORDpassword"
|
||
|
S = "saltSALTsaltSALTsaltSALTsaltSALTsalt"
|
||
|
c = 4096
|
||
|
DK = 8c0511f4c6e597c6ac6315d8f0362e225f3c501495ba23b868c005174dc4ee71115b59f9e60cd9532fa33e0f75aefe30225c583a186cd82bd4daea9724a3d3b8
|
||
|
Verify = OK
|
||
|
|
||
|
# PBKDF2 test vectors from Ruby OpenSSL
|
||
|
#
|
||
|
# Ruby code used to generate each test vector given in comments (be sure to
|
||
|
# `require "openssl"`)
|
||
|
|
||
|
# Example with 1 byte output
|
||
|
#
|
||
|
# digest = OpenSSL::Digest::SHA256.new
|
||
|
# OpenSSL::PKCS5.pbkdf2_hmac("1byteboundarytest", "salt", 8, 1, digest).unpack("H*")
|
||
|
Hash = SHA256
|
||
|
P = "1byteboundarytest"
|
||
|
S = "salt"
|
||
|
c = 8
|
||
|
DK = 68
|
||
|
Verify = OK
|
||
|
|
||
|
# Same as the previous test case, but with a bit flipped.
|
||
|
Hash = SHA256
|
||
|
P = "1byteboundarytest"
|
||
|
S = "salt"
|
||
|
c = 8
|
||
|
DK = 69
|
||
|
Verify = Err
|
||
|
|
||
|
# Example with 31 byte output
|
||
|
#
|
||
|
# digest = OpenSSL::Digest::SHA256.new
|
||
|
# OpenSSL::PKCS5.pbkdf2_hmac("31byteboundarytest", "salt", 8, 31, digest).unpack("H*")
|
||
|
Hash = SHA256
|
||
|
P = "31byteboundarytest"
|
||
|
S = "salt"
|
||
|
c = 8
|
||
|
DK = cb84e165acfa5bfab1b5aa8c78d62e86deb608b983a102cb843c7ecad886e9
|
||
|
Verify = OK
|
||
|
|
||
|
# Same as the previous test case, bit with a bit flipped in the first byte.
|
||
|
Hash = SHA256
|
||
|
P = "31byteboundarytest"
|
||
|
S = "salt"
|
||
|
c = 8
|
||
|
DK = cc84e165acfa5bfab1b5aa8c78d62e86deb608b983a102cb843c7ecad886e9
|
||
|
Verify = Err
|
||
|
|
||
|
# Example with 32 byte output
|
||
|
#
|
||
|
# digest = OpenSSL::Digest::SHA256.new
|
||
|
# OpenSSL::PKCS5.pbkdf2_hmac("32byteboundarytest", "salt", 8, 32, digest).unpack("H*")
|
||
|
Hash = SHA256
|
||
|
P = "32byteboundarytest"
|
||
|
S = "salt"
|
||
|
c = 8
|
||
|
DK = 2e0a6832b70598815e6d1350a1705291bc58fc9a66e08a9fb2d89e0b2db26285
|
||
|
Verify = OK
|
||
|
|
||
|
# Same as the previous test case, but with a bit flipped in the middle.
|
||
|
Hash = SHA256
|
||
|
P = "32byteboundarytest"
|
||
|
S = "salt"
|
||
|
c = 8
|
||
|
DK = 2e0a6832b70598815e6d1350a1715291bc58fc9a66e08a9fb2d89e0b2db26285
|
||
|
Verify = Err
|
||
|
|
||
|
# Example with 33 byte output
|
||
|
#
|
||
|
# digest = OpenSSL::Digest::SHA256.new
|
||
|
# OpenSSL::PKCS5.pbkdf2_hmac("33byteboundarytest", "salt", 8, 33, digest).unpack("H*")
|
||
|
Hash = SHA256
|
||
|
P = "33byteboundarytest"
|
||
|
S = "salt"
|
||
|
c = 8
|
||
|
DK = b7c1a3d23a03b1d29ebcb46b3e422251bae8d649e45ab00f8815553c76efe5cdeb
|
||
|
Verify = OK
|
||
|
|
||
|
# Same as the previous test case, but with the first bit flipped.
|
||
|
Hash = SHA256
|
||
|
P = "33byteboundarytest"
|
||
|
S = "salt"
|
||
|
c = 8
|
||
|
DK = 37c1a3d23a03b1d29ebcb46b3e422251bae8d649e45ab00f8815553c76efe5cdeb
|
||
|
Verify = Err
|
||
|
|
||
|
# Same as previous test case, but last bit is flipped.
|
||
|
Hash = SHA256
|
||
|
P = "33byteboundarytest"
|
||
|
S = "salt"
|
||
|
c = 8
|
||
|
DK = b7c1a3d23a03b1d29ebcb46b3e422251bae8d649e45ab00f8815553c76efe5cdea
|
||
|
Verify = Err
|
||
|
|
||
|
|
||
|
# Example with 63 byte output
|
||
|
#
|
||
|
# digest = OpenSSL::Digest::SHA256.new
|
||
|
# OpenSSL::PKCS5.pbkdf2_hmac("63byteboundarytest", "salt", 8, 63, digest).unpack("H*")
|
||
|
Hash = SHA256
|
||
|
P = "63byteboundarytest"
|
||
|
S = "salt"
|
||
|
c = 8
|
||
|
DK = d10fa19eefabe3b543e90394934173547747a1d38e9d5d8f62bf1f49c9e5d306bc8a4e483b855fb6d7c6a2f2f2dcb5d25340ce87b82661f1185c24313723be
|
||
|
Verify = OK
|
||
|
|
||
|
# Example with 64 byte output
|
||
|
#
|
||
|
# digest = OpenSSL::Digest::SHA256.new
|
||
|
# OpenSSL::PKCS5.pbkdf2_hmac("64byteboundarytest", "salt", 8, 64, digest).unpack("H*")
|
||
|
Hash = SHA256
|
||
|
P = "64byteboundarytest"
|
||
|
S = "salt"
|
||
|
c = 8
|
||
|
DK = 76d44b557a1e3062fff1c9035e30e0d3352a21fa9bb0bef446e792a75a6211fe7943e156ea32b2bbba68298792e710971e754e1e9e443f167194c957cdcaa95e
|
||
|
Verify = OK
|
||
|
|
||
|
# Example with 65 byte output
|
||
|
#
|
||
|
# digest = OpenSSL::Digest::SHA256.new
|
||
|
# OpenSSL::PKCS5.pbkdf2_hmac("65byteboundarytest", "salt", 8, 65, digest).unpack("H*")
|
||
|
Hash = SHA256
|
||
|
P = "65byteboundarytest"
|
||
|
S = "salt"
|
||
|
c = 8
|
||
|
DK = 28f8f2177c828fb447b439548603d9b3b3a455bbd339d6186772b9e7b1dfec5be27bfb5713c51181720bed046bb2d162003edb2c4f5c54722d0f68c8d597b7fa52
|
||
|
Verify = OK
|
||
|
|
||
|
# Same as the previous test case, but the last bit in the middle block was
|
||
|
# flipped.
|
||
|
Hash = SHA256
|
||
|
P = "65byteboundarytest"
|
||
|
S = "salt"
|
||
|
c = 8
|
||
|
DK = 28f8f2177c828fb447b439548603d9b3b3a455bbd339d6186772b9e7b1dfec5be27bfb5713c51181720bed046bb2d162003edb2c4f5c54722d0f68c8d597b7fb52
|
||
|
Verify = Err
|
||
|
|
||
|
|
||
|
# Example with 255 SHA-256 blocks
|
||
|
#
|
||
|
# digest = OpenSSL::Digest::SHA256.new
|
||
|
# OpenSSL::PKCS5.pbkdf2_hmac("255blockboundarytest", "salt", 8, 32 * 255, digest).unpack("H*")
|
||
|
Hash = SHA256
|
||
|
P = "255blockboundarytest"
|
||
|
S = "salt"
|
||
|
c = 8
|
||
|
DK = 092c7b59d56a3ccc3d02dc145e8500648f4eb6e6ed6b5c78841fefc8f873e580e4e07ab1895f1cbef00cc2d0e52242bd02a2e35a2b243fafa988bf0d4b394c4d257c6b6dadad614d060840c57875dc553b152ff8ff66cfebb3f8d18429522dcc887e2aee80ca9cdfa8b1d775b39f46356bde051c5085d069b5a62fe334fe8c4f2a7605bc4a7e307ccf94069a874a4c0b898e381c69494b2b950fb819cbb7b1f4ea07c33e70e5e4b9d0bca28f6f45a63cedf9cf9db01e969dcdc70af0bc79e18d70f19bbc53d9590c6f5288063f165f32afa92c5548760117d9207528a2b1cd272439e36267302203d58b70c3cf292c8753c02104d2cf0074ca863dc39c5cc3822bee5b2d7dab6d3fe1bf90b43e955ccf3d7775bcbd3a40d60d474a11713ad4bb748e49b0831f13a565f3704f662187db408e7902448c3532956a7bf0c3cd7264e1f79b55cdc42e26af92de4cf2cc876c31cbff64876e7656037a3f1b783c0be71a81e71fe5a4a8da2cdcc217d36b9157effb28b52169aab6d9f0b4b6b1e8de377a66b9af5dfb17836664b09ddc3022223654f1960309953d807b50e46a12ae2179413509ae78461d0930a58ea55ed96cf4285383368d14341dc29d2507d1af2400f8f637d0118305c5faee69a0099e901dcdfe2d28ecc4511a955b073ebf9dea593d934782fa898ffe12d2973174ba78f919e059f452e97dec18e815fb66b968d0be0541cb087f3ae312941c58ecd372d8ff3dacf80dfd327e20fafaae67aae786f2d720c3c7e08d01479142fc36446b52f1ec02043497eb43389ed200b104f0488f10518ece2e041ec54f272e63fa02cd823e011611853bfd2de9e57a14a38a6172bef54c50a021b6e4a426f1d771ee9d2ab185411ade2c667e9245949f0e942abf9b21e6139e8299bfd7837aa5c9a26fd3a894faf066c6c863eca04c903ad3276c47cea80439b96e20881e9b717e9fd570aa03126e4ae0474c2a0d7c22921cd20e0c602941a2a15108f9324d782ecc3d62409653ab9c936943907645843122417cb0210e6320d66b25e64c3f3a18d7c339d6cf3591ee95e92ca4b9e409f622a12a577d905ee1ccdbc645487a67454a357a898906a9f8a55ceabeb41b09041351ff91e41e4e0863fdbdc406d8a7acacbc743691227d4d7c50b7c0e2f4d98fff1427ede0454b025fc83c8dde62cd1842b8f15002a995b16edd9ac4073e28dfb405de0d847061ce5f154ff0c19d56485a7bcc9eb84f7f04bf13f43951bae41c011c7459de18270670c7df424341ab105cfc3b1d10df9262e23425e8d00e410a5d27f6d9f82aad2881198d098a94f05fc2eb99f72d3fcaa68c5fef8e4b0e1f284a451e5a68574dc770e69255a030ec631691cc90a0ea3ff862d84b34632838e7b3c2ff5af544d476136b9dd62b58646b9f614af9fc3d48d66088a7f63c1186d033f6afa9e01f2037aad14bd2404f79c394cd51ee751014b6905600a0ce9dcf9cc2eb816d081eda3d28afc288fcb35e51bbc1832d76d6b97b6761f75b8f908570ea23823bb7bdd8a57f8c431b7fcb7b88837b26f4d3af523ef684a3875636da46e6008737ca1a85f2569b23908736613c381b555198d7a433bee146273eede269a0443157cc1d31cfe42bb58bad9e5523e9d87a2cb5eb16a82f9b84b51b8fb0540daf3f65b4799916fbf218da9fa742d92616f55fc303d339a52c87eef57fca8468118fe195cd458c2bc43cca66724acb968e88f81a679988ae7a4478674f7003a9c3f76fa9a580fb5b976ce51544ad33aa86bd5bc722d00f84fdebab3a8e19584ef6e5865afebe22207d1bf62167923c78f1e4c9fbda21fb23a3e5956b766f2ed5775482606084b1d0fdce41deb5ba0fdae5fdeee63405e47139cb10a15593cfa037595512e15360897577cc62ce634c3976b1e8f50d276736689d39b8eca4a7871b0d16200a5b191789d4dc5ca42831238dc0833457031419174697dea92e14b9c61eba542dd07038d52782e58845bd988ce14951e2e426c43d9c29ac08e893d93c074d54b500bf7b0c1e6f1f85d0aedb8f96ec07622e919dc856313a44e212597685189fb263daac6039222ab25f46d68f995c1ba74f4b9443f55f0030418cfc39b25be3c3722039364ddb451353a8fc2128969bbdbbb36c4570692143ededb9c0c5c47374deb39a1771d24e688afebd363c381d3a0842822390dd97864c92c42f67f363026cc8116ce5e556437af472eef07e58f52a557df9278e94e505c74dcbfd85611ccf40655cba234ac92f47e8d464934a8a6b1c5a6706da8c9514cc133a938798fa474f8c8cbfbfbebd8c077f22fefaae074720fb2e85ea13dda03c083a9ce202f1c7bc532a39dee3cdb6b3692a61e4bcaad58adb79c178277d17887b7de304ad190cf94dda073a19d6c398384cdebd2d46bb38ee0dd367cb0a089c876580878f52fdc49908f210ebf2ddc0ea076636126c0e84018c9522aa5a68eafd566cc247f841742c4a53665879e3c42af53fd03eb5c525695c62de2a09360729334c04a6b3aa59d3489e1423cade10413b057801caf35756e42b85464c8d24ca3876ddff1ff9ced03968f63500f567aa6023dbe90983a5f57991c61da85c7fd0629bc7f684a6174ff39225d929437c2c9a49493dce56034c975b8220d0aae11edf3dc65658d3fd3e1e6386937d97f7c6053c849e9869fe2080619dcf65fee396ad7d42f1db3a580929ed03667f7537709a85f4dc88d911d7a59b688e4a06c8b7057c1ec9cec7acf3549e8c813a8316221f6f45c9ff1b5c8201e853a295bef0fa48923672879d7a3f3417978cb6821d525e69a05620ba3a73de121ecbfe24f0a308e3c0336f5867cb299c1c39857592b59a44cbefdf49ac22f1295562dc
|
||
|
Verify = OK
|
||
|
|
||
|
# Example with 256 SHA-256 blocks
|
||
|
#
|
||
|
# digest = OpenSSL::Digest::SHA256.new
|
||
|
# OpenSSL::PKCS5.pbkdf2_hmac("256blockboundarytest", "salt", 8, 32 * 256, digest).unpack("H*")
|
||
|
Hash = SHA256
|
||
|
P = "256blockboundarytest"
|
||
|
S = "salt"
|
||
|
c = 8
|
||
|
DK = eb64bac8e24ae1b54266d757f0fabbc72a57f5dc5d03b8c39e65f2062939bc594d82acdd144120b322ca12fba07e113ea83b1ed2c1b33603d72c67c6ef31ddcf6a9547b5fab0655bf5a7c220a307a21491932dbbffb54f99ac997ec6bf898ff9005a88c72c7ee49126397f368f704e779dc25687af9b419b6ba8cc4e177f805f55242b627e980c0898a1ea46ba633e6c0db0a14f7fb323d26bed1a524387041f8c5f6e9edd0a4ea51e0fbae1b04b009d41049eeccbfa45702716fb57b9f4167082368a36f55e7aac656b3677595868415e9e57e7a5cafdf60eb7a8d66098f0be8f012caf9a78cf2f5c0b4d153f9fd067d781f39b9acd730b6fdc9d27f93946c0e0b184d86f7eaced5a8b734f5beab2b930789c18934296c6c86e28845607e9f6d1035c30a7ef5003b19336a56aea507e3c58360f091e70ff59c5869a9e0bd14d2dca4d0a144bcb607bdf583ef4230edaad75e4db16a8275eb74c4a4cf6163e6aa293ebd6ea10b5be8179693687c2cf9ff038ded9a5a32917bbd2c4a703b0500ee0a0373bb324b409358bbc30bedbb405875eb281e9a7dd58b89ca12a9dc8505c524a2d10cfe120250bd22b9b340a29256b58548dee0da72a16084a130fe6d734bb70811e855d20b85d85f662c9574be68238a88165c22194e4942cab792184050abb3a7e22fec3f58537af84ebfa8d858dc879115b2e71c34aad0f6591c64e11e2ff8218c6841ec9b81dd9affc3ea70cdeb09423e712251f4022fbc4d54e0c5d174e198ddd9c6c8587d0c8f3bdbec79b10d46fda6e354c0a8b3b59ba82dfa164369f3075d1ad93c69a716ba8a377c626b9f44e9591c530e72a65abddb15e3766ecd068fcfe046efb86bbc00bfc24fa50fa6ffdf1f84e6e0c0d335c00637f14414a7369f5d2288bc04f284c0730766b3f9fe8464559b61c2f3f4d6e08b1cbf578f186605601533860d5f69aad06dc993d4f0ad7142249f68e1531c60fb3791ede647dc499a6b9bdfc1efd7bc0b40b95c3caeeba615d0a9c2564151598db35a7752953a7b2a40162359b69a4cf9a591d05f38dce8968dd6b6f16f57609fde9a8af9f16ec3b8a40311aec06a5bbae97e77edf32d22772b72fd61c4bf9cf34049830270653be365cd24b46fb7894150fd9e84ae211493b4ce4a95e7d0aa1f12709ba65f7bd7d8c904a9f967ced8e30789616242f7f9054e596f610d7bed0e55c3c91546b8283d965cbc2a79d5ddc4224e1db662d97bbf35847ecca83ee9e4c23d5b30ac8e2608186930e621e8cfa316dcd02b9dc17d59bcbe7fbdfcb6ecf882ce0c122ac82dd305ee7fc08b18fd2d7f1fab397038b84f9bed0d6aff490d720764aaa32a6f5b73ec6ba2083a5fb0a9e1d97bca1038f235d7b13f1baafea051ae898a3b92dc15bc3f7fd87db77a00dbefb9601157ae806e23386f64683992de57bfa37c8e4bc72ca7894ddeb16b833619f430e7da701859608f609d93044283841154da70b62f9267e15c741d5dd0e86ef58bc3cdc4f64c8fc63b9f466cd5415dd8650f7f400cd5c53544bdfbb6fe68c239e4d8d2c07f6affd864802c495b6b4fd0f1fb968c90934f93ba25d21cd7249dc4e3ef1301746d37e67ba34a861bbfd5ae7ea9ed8d7e853855f0f7bd0314b04697980191f448d71d7aed082781b04e3c01c46cce86ee1b8807bd8cf64988370925305f59814bbcecf0e9d39a8c0daa85625ddea187d19f7e3d970b0739a56f3b5c8de17c946c5692dd0503f8b20a3fc401d6fc6990c2a42e81daa46df79727e6a5f03d5c5a616e33b077f68939df7f9ae8a09599cc3a0e0e36b23ff5df4eca1ea1c8b5223a0cf2abb96808adcdeaf68a49e767ac5f934f499b82d775e995a69cee0822d13492a3038bf78faf01d9f4d87ba1f3311c002b4e603671a2cf007352fca16c30ad307c030d70e5f9c091b2035e164dfd6b9014c9bb365a694f5198566a9d58eed322f6d71b6148c1191f9f8ed4c58c03c403fcc5a1de5ace76fa1c1a42aab81e3be73d312513f278d5de7d67e24c961d709a3bc252e11eb067ea98583543675119f21fbf264024f4d33b2f6f17e98aa06dfb409f16a8692d9c7bf0fa340b13c4826cff8b07efa5ba69defb90870b43f27b632c1b76ea7129865e18d7fc597007530852d307708b51287a85d1d6395b489156f18fcde58157f5100c7c8d595ffe37fb8c1077fa204e97a721d45be4dce7b473a5d02cc31b4346f534d52a7ae7461d12fe12fb80dd7124d95e7683d3ee6b521094c1181a4c84e0272d2e0359bf6615121838c0e7da6b344b479efe17e86b52999fc7de81852bb89e335ee54123c408d9cbca031a5b4d01cb736108f9aa1dae4775d1e970ce179c565bbde3bab82f8bd883afb25a66db21fec824db6f4a140c5008acb4cc3e518b6ca77e446cdc82b4d4d6792a9e1c8fe151e84d531d8e2d1c751967f9b3ea7a2387fe53711fc48ee7524f487a3c1af2590be648f6965869a97b88729ccc6578c3aeab055f16998c1750ee8c9358875ef48c37400d4adca39ed81a0bec5e43f4a5819dca470dc86bcbcd932c8bb4017880b3934844bb76c04e4a65285fda9fc0e4e4622b3b13f1ffbad3754fdff8a3705ad370ad089e590cc8b57c2e5618041042e808dfa003bb19d229cd60a849f345f9bf85f53496b1498caada27565312b909afef165d40d82bbe3405a404ded080ece28834129c2b199a4301d6c4ee6f0502afe3dbb3d7be80da9e6b5cb2188fbb73605b31ed4e6846e75d875ab586d995cb6e20b41765e86ece82db4ce6fc1c3e63fa9bb2d2a273e217a0235e97c7750c5a543757de8759009e243d847f79a1aaba097d540573c2fe0d9fe611fe1d30484b5ae60834206b9fb7ed8fe86813f661eeb01bb
|
||
|
Verify = OK
|
||
|
|
||
|
# Same as the previous test case, but the last bit is flipped.
|
||
|
Hash = SHA256
|
||
|
P = "256blockboundarytest"
|
||
|
S = "salt"
|
||
|
c = 8
|
||
|
DK = eb64bac8e24ae1b54266d757f0fabbc72a57f5dc5d03b8c39e65f2062939bc594d82acdd144120b322ca12fba07e113ea83b1ed2c1b33603d72c67c6ef31ddcf6a9547b5fab0655bf5a7c220a307a21491932dbbffb54f99ac997ec6bf898ff9005a88c72c7ee49126397f368f704e779dc25687af9b419b6ba8cc4e177f805f55242b627e980c0898a1ea46ba633e6c0db0a14f7fb323d26bed1a524387041f8c5f6e9edd0a4ea51e0fbae1b04b009d41049eeccbfa45702716fb57b9f4167082368a36f55e7aac656b3677595868415e9e57e7a5cafdf60eb7a8d66098f0be8f012caf9a78cf2f5c0b4d153f9fd067d781f39b9acd730b6fdc9d27f93946c0e0b184d86f7eaced5a8b734f5beab2b930789c18934296c6c86e28845607e9f6d1035c30a7ef5003b19336a56aea507e3c58360f091e70ff59c5869a9e0bd14d2dca4d0a144bcb607bdf583ef4230edaad75e4db16a8275eb74c4a4cf6163e6aa293ebd6ea10b5be8179693687c2cf9ff038ded9a5a32917bbd2c4a703b0500ee0a0373bb324b409358bbc30bedbb405875eb281e9a7dd58b89ca12a9dc8505c524a2d10cfe120250bd22b9b340a29256b58548dee0da72a16084a130fe6d734bb70811e855d20b85d85f662c9574be68238a88165c22194e4942cab792184050abb3a7e22fec3f58537af84ebfa8d858dc879115b2e71c34aad0f6591c64e11e2ff8218c6841ec9b81dd9affc3ea70cdeb09423e712251f4022fbc4d54e0c5d174e198ddd9c6c8587d0c8f3bdbec79b10d46fda6e354c0a8b3b59ba82dfa164369f3075d1ad93c69a716ba8a377c626b9f44e9591c530e72a65abddb15e3766ecd068fcfe046efb86bbc00bfc24fa50fa6ffdf1f84e6e0c0d335c00637f14414a7369f5d2288bc04f284c0730766b3f9fe8464559b61c2f3f4d6e08b1cbf578f186605601533860d5f69aad06dc993d4f0ad7142249f68e1531c60fb3791ede647dc499a6b9bdfc1efd7bc0b40b95c3caeeba615d0a9c2564151598db35a7752953a7b2a40162359b69a4cf9a591d05f38dce8968dd6b6f16f57609fde9a8af9f16ec3b8a40311aec06a5bbae97e77edf32d22772b72fd61c4bf9cf34049830270653be365cd24b46fb7894150fd9e84ae211493b4ce4a95e7d0aa1f12709ba65f7bd7d8c904a9f967ced8e30789616242f7f9054e596f610d7bed0e55c3c91546b8283d965cbc2a79d5ddc4224e1db662d97bbf35847ecca83ee9e4c23d5b30ac8e2608186930e621e8cfa316dcd02b9dc17d59bcbe7fbdfcb6ecf882ce0c122ac82dd305ee7fc08b18fd2d7f1fab397038b84f9bed0d6aff490d720764aaa32a6f5b73ec6ba2083a5fb0a9e1d97bca1038f235d7b13f1baafea051ae898a3b92dc15bc3f7fd87db77a00dbefb9601157ae806e23386f64683992de57bfa37c8e4bc72ca7894ddeb16b833619f430e7da701859608f609d93044283841154da70b62f9267e15c741d5dd0e86ef58bc3cdc4f64c8fc63b9f466cd5415dd8650f7f400cd5c53544bdfbb6fe68c239e4d8d2c07f6affd864802c495b6b4fd0f1fb968c90934f93ba25d21cd7249dc4e3ef1301746d37e67ba34a861bbfd5ae7ea9ed8d7e853855f0f7bd0314b04697980191f448d71d7aed082781b04e3c01c46cce86ee1b8807bd8cf64988370925305f59814bbcecf0e9d39a8c0daa85625ddea187d19f7e3d970b0739a56f3b5c8de17c946c5692dd0503f8b20a3fc401d6fc6990c2a42e81daa46df79727e6a5f03d5c5a616e33b077f68939df7f9ae8a09599cc3a0e0e36b23ff5df4eca1ea1c8b5223a0cf2abb96808adcdeaf68a49e767ac5f934f499b82d775e995a69cee0822d13492a3038bf78faf01d9f4d87ba1f3311c002b4e603671a2cf007352fca16c30ad307c030d70e5f9c091b2035e164dfd6b9014c9bb365a694f5198566a9d58eed322f6d71b6148c1191f9f8ed4c58c03c403fcc5a1de5ace76fa1c1a42aab81e3be73d312513f278d5de7d67e24c961d709a3bc252e11eb067ea98583543675119f21fbf264024f4d33b2f6f17e98aa06dfb409f16a8692d9c7bf0fa340b13c4826cff8b07efa5ba69defb90870b43f27b632c1b76ea7129865e18d7fc597007530852d307708b51287a85d1d6395b489156f18fcde58157f5100c7c8d595ffe37fb8c1077fa204e97a721d45be4dce7b473a5d02cc31b4346f534d52a7ae7461d12fe12fb80dd7124d95e7683d3ee6b521094c1181a4c84e0272d2e0359bf6615121838c0e7da6b344b479efe17e86b52999fc7de81852bb89e335ee54123c408d9cbca031a5b4d01cb736108f9aa1dae4775d1e970ce179c565bbde3bab82f8bd883afb25a66db21fec824db6f4a140c5008acb4cc3e518b6ca77e446cdc82b4d4d6792a9e1c8fe151e84d531d8e2d1c751967f9b3ea7a2387fe53711fc48ee7524f487a3c1af2590be648f6965869a97b88729ccc6578c3aeab055f16998c1750ee8c9358875ef48c37400d4adca39ed81a0bec5e43f4a5819dca470dc86bcbcd932c8bb4017880b3934844bb76c04e4a65285fda9fc0e4e4622b3b13f1ffbad3754fdff8a3705ad370ad089e590cc8b57c2e5618041042e808dfa003bb19d229cd60a849f345f9bf85f53496b1498caada27565312b909afef165d40d82bbe3405a404ded080ece28834129c2b199a4301d6c4ee6f0502afe3dbb3d7be80da9e6b5cb2188fbb73605b31ed4e6846e75d875ab586d995cb6e20b41765e86ece82db4ce6fc1c3e63fa9bb2d2a273e217a0235e97c7750c5a543757de8759009e243d847f79a1aaba097d540573c2fe0d9fe611fe1d30484b5ae60834206b9fb7ed8fe86813f661eeb01bb
|
||
|
Verify = Err
|
||
|
|
||
|
Hash = SHA256
|
||
|
P = "EmptyDKTest"
|
||
|
S = "salt"
|
||
|
c = 8
|
||
|
DK = ""
|
||
|
Verify = Err
|
||
|
|
||
|
# PBKDF2 test vectors from RFC 7914
|
||
|
|
||
|
Hash = SHA256
|
||
|
P = "passwd"
|
||
|
S = "salt"
|
||
|
c = 1
|
||
|
DK = 55ac046e56e3089fec1691c22544b605f94185216dde0465e68b9d57c20dacbc49ca9cccf179b645991664b39d77ef317c71b845b1e30bd509112041d3a19783
|
||
|
Verify = OK
|
||
|
|
||
|
Hash = SHA256
|
||
|
P = "Password"
|
||
|
S = "NaCl"
|
||
|
c = 80000
|
||
|
DK = 4ddcd8f60b98be21830cee5ef22701f9641a4418d04c0414aeff08876b34ab56a1d425a1225833549adb841b51c9b3176a272bdebba1d078478f62b397f33c8d
|
||
|
Verify = OK
|