2012-08-15 65 views
0

我試圖分發一個程序,其中包括使用QCryptographicHash進行一些簡單的身份驗證。代碼是這樣的:Qt QCryptographicHash問題

QString myDigest = mySalt + userName.toUpper(); 
QString myHash = QCryptographicHash::hash(myDigest.toAscii(), QCryptographicHash::Sha1).toHex(); 

用戶被給予這個散列,它作爲一個序列鍵。要使用該程序,他們必須輸入他們的用戶名和序列號。

問題是,這適用於某些電腦,但不適用於其他電腦。有誰知道什麼可能導致這種不一致?

回答

0

也許toUpper根據語言環境有不同的行爲? qt是否有像C#一樣的toUpperInvariant?

+0

我嘗試使用QLocale :: toUpper()與美國英語區域設置,但這並沒有改變任何東西。 – Ken 2012-08-16 14:30:56

+0

然後,您需要在每臺計算機上打印詳細的調試信息,以便您可以看到計算的哪一步有所不同。 – 2012-08-16 14:58:24