Android字符串解密Base64

Android字符串解密Base64,android,base64,encryption,Android,Base64,Encryption,尝试解密登录页的base64字符串并收到错误“Input string为null”。Logcat指向第55行和第139行,但我不知道如何重新编码。我是java和加密的新手,但知道解决方案很简单。请参阅下面的logcat和decrypt类 日志: 11-12 04:51:49.273: W/System.err(22312): java.lang.NullPointerException: Input string was null. 11-12 04:51:49.273: W/System.er

尝试解密登录页的base64字符串并收到错误“Input string为null”。Logcat指向第55行和第139行,但我不知道如何重新编码。我是java和加密的新手,但知道解决方案很简单。请参阅下面的logcat和decrypt类

日志:

11-12 04:51:49.273: W/System.err(22312): java.lang.NullPointerException: Input string was null.
11-12 04:51:49.273: W/System.err(22312):    at com.SharedPreferences.Login.Base64.decode(Base64.java:1243)
11-12 04:51:49.283: W/System.err(22312):    at com.SharedPreferences.Login.Base64.decode(Base64.java:1224)
11-12 04:51:49.283: W/System.err(22312):    at com.SharedPreferences.Login.AccessApp.decrypt(AccessApp.java:139)
11-12 04:51:49.293: W/System.err(22312):    at com.SharedPreferences.Login.AccessApp.onClick(AccessApp.java:55)
11-12 04:51:49.293: W/System.err(22312):    at android.view.View.performClick(View.java:3511)
11-12 04:51:49.293: W/System.err(22312):    at android.view.View$PerformClick.run(View.java:14105)
11-12 04:51:49.303: W/System.err(22312):    at android.os.Handler.handleCallback(Handler.java:605)
11-12 04:51:49.303: W/System.err(22312):    at android.os.Handler.dispatchMessage(Handler.java:92)
11-12 04:51:49.303: W/System.err(22312):    at android.os.Looper.loop(Looper.java:137)
11-12 04:51:49.303: W/System.err(22312):    at android.app.ActivityThread.main(ActivityThread.java:4424)
11-12 04:51:49.303: W/System.err(22312):    at java.lang.reflect.Method.invokeNative(Native Method)
11-12 04:51:49.313: W/System.err(22312):    at java.lang.reflect.Method.invoke(Method.java:511)
11-12 04:51:49.313: W/System.err(22312):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
11-12 04:51:49.313: W/System.err(22312):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
11-12 04:51:49.313: W/System.err(22312):    at dalvik.system.NativeStart.main(Native Method)
解密类(AccessApp):


如果您在
SharedReferences
中存储了加密的用户名和密码,则需要在尝试解码之前获取编码版本

56.        user = sp.getString("USERNAME_KEY", null);
55.        String decryptedUser = decrypt(user, key);
....
65.        pass = sp.getString("PASSWORD_KEY", null);
64.        String decryptedPass = decrypt(pass, key);

为了澄清,Base64不是加密算法,而是编码算法。Base64不是加密算法,它只是将二进制数据编码为文本表示。您不需要任何键来反转操作。因此,这不是一个安全措施。在进行您建议的更改时,我收到一个字符串decryptedUser和decryptedPass的“未使用局部变量值”。Logcat给出了相同的错误消息。@user1165694 Logcat不能给你这个警告,如果有,那是关于其他事情的
.value not used
表示您不在任何地方使用
decrypyteduser
(并传递)。您需要更改
uname.getText().toString().equals(user)
以与
decryptedUser
进行比较,并在以后更改密码。
56.        user = sp.getString("USERNAME_KEY", null);
55.        String decryptedUser = decrypt(user, key);
....
65.        pass = sp.getString("PASSWORD_KEY", null);
64.        String decryptedPass = decrypt(pass, key);