3f8d4371创建于 2024年7月1日历史提交
from pbkdf2 import pbkdf2.*
from encoding import hex.*
from crypto import keys.*
from crypto import digest.*

let expect_sha512: String = "41daf57a257f11d162b77bdf358a3543"
let expect_sha384: String = "8018f4c0b5210eae05751ee629e123b6"
let expect_sha256: String = "e4f84f342caf24895bea5d3b0f0640de"
let expect_sha224: String = "89a1c76df5c2cc5a4a708a0173df7e8d"
let expect_sha1: String = "dae58d39fe3765424e969fccdaa954f5"
let expect_md5: String = "17a629dab027d38ed26adef01ba191ca"
let expect_sm3: String = "3ff118e71c75a1d2d8265e890e8abf7a"

@Test
class PBKDF2Test {
    @TestCase
    func testSHA512(): Unit {
        var key = PBKDF2.key({ => SHA512()}, "password".toArray(), "123456".toArray(), 1000, 16)
        @Expect(toHexString(key), expect_sha512)
    }

    @TestCase
    func testSHA384(): Unit {
        var key = PBKDF2.key({ => SHA384()}, "password".toArray(), "123456".toArray(), 1000, 16)
        @Expect(toHexString(key), expect_sha384)
    }

    @TestCase
    func testSHA256(): Unit {
        var key = PBKDF2.key({ => SHA256()}, "password".toArray(), "123456".toArray(), 1000, 16)
        @Expect(toHexString(key), expect_sha256)
    }

    @TestCase
    func testSHA224(): Unit {
        var key = PBKDF2.key({ => SHA224()}, "password".toArray(), "123456".toArray(), 1000, 16)
        @Expect(toHexString(key), expect_sha224)
    }

    @TestCase
    func testSHA1(): Unit {
        var key = PBKDF2.key({ => SHA1()}, "password".toArray(), "123456".toArray(), 1000, 16)
        @Expect(toHexString(key), expect_sha1)
    }

    @TestCase
    func testMD5(): Unit {
        var key = PBKDF2.key({ => MD5()}, "password".toArray(), "123456".toArray(), 1000, 16)
        @Expect(toHexString(key), expect_md5)
    }

    @TestCase
    func testSM3(): Unit {
        var key = PBKDF2.key({ => SM3()}, "password".toArray(), "123456".toArray(), 1000, 16)
        @Expect(toHexString(key), expect_sm3)
    }

    @TestCase
    func testPBKDF2Invalid(): Unit {
        var res = 0
        try {
            var key = PBKDF2.key({ => SM3()}, "password".toArray(), "123456".toArray(), 0, 16)
        } catch (e: CryptoException) {
            res += 1
        }
        @Expect(res, 1)
    }
}