我遇到了一个非常奇怪的情况,我想我会在这里发帖,因为我不知道哪里出了问题。我开发了这个涉及密码的 android 应用程序,我有一个用户将保存的加密 AES 字符串保存到文件中。当用户使用他们的密码再次登录系统时,我需要查看它是否等于文件中已经加密的密码。
所以我捕获它并尝试像往常一样使用 .equals 方法比较两个字符串,令我惊讶的是它没有起作用。
这是两个字符串:我错过了什么?任何帮助将不胜感激,因为我什至没有关于如何解决这个问题的第一步。我也试过 compareTo == 0 也没有用。
非常感谢!!!
第一个字符串来自文件,第二个是用户刚刚输入的密码的加密版本:
o0JkTVCBcbZnePszCKp64/cOJx/W/dud/xszfvNjwGk=
o0JkTVCBcbZnePszCKp64/cOJx/W/dud/xszfvNjwGk=
最佳答案
Base64编码用于将二进制数据编码成字符串; base64 字符串不是数据本身。要比较字符串中的数据,首先将其解码为字节数组,然后使用 Java Arrays
类中的实用函数比较字节数组。这应该避免例如问题编码中和周围的空白。
关于Java equals 方法和加密字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20028284/