我使用Gwt-crypto得到了一些非常奇怪的錯誤。當我嘗試加載從喜好playerId我做了以下內容:Gwt加密 - 解密導致的奇怪異常耗時過長?
public long loadIdFromPref(){
Preferences preferences = Gdx.app.getPreferences(HelperKeys.Preferences.GAME_PREFS);
String secret = decryptString("ab0c441ca9dbd026bbb98a588e7d34d579dd00c326fbd38a");
Long value = Long.parseLong(secret);
return value;
}
DecryptString方法:
private String decryptString(String string)
{
try
{
string = getEncryptor().decrypt(string);
}
catch (DataLengthException e)
{
e.printStackTrace();
} catch (IllegalStateException e)
{
e.printStackTrace();
} catch (InvalidCipherTextException e)
{
e.printStackTrace();
}
return string;
}
的時候,我碰到下面的錯誤約30%:
java.lang.NumberFormatException: For input string: "53096146ン8}+ン│ ̄"
at java.lang.Long.parseLong(Long.java:589)
at java.lang.Long.parseLong(Long.java:631)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)
事實上,它有時而不是別人會導致我相信解密有時會花費很長時間,代碼在完成之前還會繼續。這可能嗎?我能做些什麼呢?
我得到另一個錯誤約5%的時間,很難重新創建:
InvalidCipherTextException: pad block corrupted
會在並欣賞的任何信息太多,不知道這意味着什麼。
供參考,在這裏是我如何啓動encryptor
:
setEncryptor(new TripleDesCipher());
ripleDesKeyGenerator generator = new TripleDesKeyGenerator();
byte[] key = generator.decodeKey("jdkreur74832904ufke3382r2o3ijf9w");
getEncryptor().setKey(key);
請讓我知道如果你需要更多的信息來幫助。
我通過使decryptString()同步來修復它。並沒有等待它完成。不需要是HEX值。 –
@Green_qaue請檢查我的更新到答案。 – xycf7