我使用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