0
我在我的android應用中使用這個庫。 我可以成功編譯它並綁定我的android應用程序中的本地實現,但如果它在32位或64位環境中執行,scryptN函數會產生不同的結果,那怎麼可能? 的Java實現,而不是行之有效的兩種環境SCrypt在x64平臺上產生不同的結果
要重現該問題,只是建立與NDK的共享庫並嘗試運行該功能
public String hashPassword(String plainPassword) {
final int shift = 14;
final int n = 1 << shift;
final int r = 8;
final int p = 1;
final int dklen = 64;
try {
return ByteUtils.toHexString(SCrypt.scrypt(
plainPassword.getBytes("utf-8"),
"theseed".getBytes("utf-8"),
n, r, p, dklen));
} catch (Exception e) {
LogHelper.e("error hashing password", e);
return null;
}
}
,如果你在32位運行,你會得到不同的輸出架構或64位的一個
謝謝
示例代碼和樣本輸入/輸出? – zaph
儘管將所有調用放在一個混亂中可能非常「困難」,但幾乎不可能進行調試。將調用'plainPassword.getBytes'和'thised'.getBytes'分解爲中間變量,並以十六進制檢查它們。調試的第一步是驗證輸入。爲下一個讀取器和調試器編寫代碼,讓編譯器處理優化,通常在編譯器優化期間組合中間變量。 – zaph