CCKeyDerivationPBKDF线程安全吗?

2024-10-19 23:51:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用CCKeyDerivationPBKDF在并发环境中生成和验证密码哈希,我想知道它是否线程安全。这个函数的文档根本没有提到线程安全性,所以我目前使用的是一个安全的锁,但是如果不需要的话,我宁愿不使用锁。在


Tags: 函数文档密码环境线程需要的话cckeyderivationpbkdf
2条回答

由于缺乏文档或源代码,一种选择是构建一个测试应用程序,在调用cckeydrivationpbkdf时,会有10个线程循环,并从10个不同的参数集中随机选择10个已知结果。在

每个线程检查调用的结果,以确保它是预期的结果。在这个循环中,每个线程还应该有一个usleep()调用,时间是随机的(钟形曲线位于每次调用cckeydrivationpbkdf所用时间的10%),以便尽可能多地尝试交叉操作。在

您可能希望通过调试来测试它,以跟踪您能够生成多少并发性。有了10%的睡眠时间和10个线程,您应该能够保持9个线程并发。在

如果它通过了100000000个调用的集合而没有出错,那么我认为它是线程安全的。当然,你可以运行更长的时间来获得更大的保证。在

在浏览了CCKeyDerivationPBKDF()的源代码之后,我发现它是“线程不安全的”。虽然CCKeyDerivationPBKDF()的代码使用了许多线程安全的库函数(例如:bzero),但大多数用户定义的函数(例如:PRF)和从这些用户定义函数调用的底层函数都可能是线程不安全的。(例如,由于使用多个指针和内存的不安全转换,例如在CCHMac中)。我建议,除非他们使所有的底层函数线程安全,或者有某种机制使其有条件地线程安全,否则坚持你的方法,或者修改commoncrypto代码使其线程安全并使用该代码。在

希望有帮助。在

相关问题 更多 >