Parallelize SHA-512 userId recovery (fixes #4 timeout) - #26
Open
official-Cheongae wants to merge 1 commit into
Open
Parallelize SHA-512 userId recovery (fixes #4 timeout)#26official-Cheongae wants to merge 1 commit into
official-Cheongae wants to merge 1 commit into
Conversation
recoverUserIdFromSHA512 scanned 0..1e9 single-threaded with a 10s timeout. Modern KakaoTalk account numbers are 8-10 digit integers (hundreds of millions), so the scan reliably timed out before reaching them and auto-detection fell back to "userId not found" (issue silver-flight-group#4). Shard the search across all cores via DispatchQueue.concurrentPerform, raise the ceiling to 5e9, and extend the timeout. A thread-safe result holder carries the first hit and a shared cancellation flag so all workers stop as soon as one finds the pre-image (or the deadline hits). Verified: release build clean on macOS 26 / Swift 6.3. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
DeviceInfo.recoverUserIdFromSHA512scanned0..1_000_000_000single-threaded with a 10-second timeout. Modern KakaoTalk account numbers are 8–10 digit integers (hundreds of millions), so on a real machine the scan times out before reaching the pre-image anduserId()throws — auth then falls back to "auto-detection failed" (issue #4).Observed on macOS 26.5 / KakaoTalk 26.7.0: single-thread scan never reached the account id within 10s.
Fix
DispatchQueue.concurrentPerform.5e9and extend the deadline.@unchecked Sendableresult holder (guarded byNSLock) carries the first hit and a shared cancellation flag, so every worker stops the instant one finds the pre-image or the deadline passes.No behavior change to the derivation itself — same
CC_SHA512(String(i))pre-image, just found in parallel.Verification