我遇到了一个非常奇怪的情况,并认为我会在这里发帖,因为我不知道什么是错的。我开发了这个涉及密码的Android应用程序,我有一个用户将保存的加密AES字符串保存到文件中。当用户使用他们的密码再次登录系统时,我需要查看它是否等于文件中已加密的。
所以我抓住它并试图像往常一样使用.equals方法比较两个字符串,令我惊讶的是它不起作用。
以下是两个字符串:我错过了什么?任何帮助将不胜感激,因为我甚至没有第一步如何解决这个问题。我也尝试过compareTo == 0,它也没用。
非常感谢!!!
第一个字符串来自文件,第二个字符串是用户刚输入的密码的加密版本:
o0JkTVCBcbZnePszCKp64/cOJx/W/dud/xszfvNjwGk=
o0JkTVCBcbZnePszCKp64/cOJx/W/dud/xszfvNjwGk=
答案 0 :(得分:1)
Base64编码用于将二进制数据编码为字符串; base64字符串不是数据本身。要比较字符串中的数据,首先将其解码为字节数组,然后使用Java Arrays
类中的实用程序函数比较字节数组。这应该避免例如问题。编码内外的空白区域。
答案 1 :(得分:0)
对不起,但是对我有用 使用 .trim(); 加密的字符串,然后进行比较