Java equals 方法和加密字符串

标签 java encryption equals

我遇到了一个非常奇怪的情况,我想我会在这里发帖,因为我不知道哪里出了问题。我开发了这个涉及密码的 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/

相关文章:

java - 在 Jetty 9 中更改线程池大小

javascript - 如果我希望用户和管理员登录后显示不同的布局,我该怎么办?

java - Vector 和 ArrayDeque 类

java - 覆盖等于不工作

c# - 在 C# 中,如何在我的类中正确重载 Equals 运算符以便 Queue.Contains() 起作用?

java - 执行hql查询时出错

javascript - AES 加密 PHP 到 NodeJS?

php - 使用 SSL (WSS) 的 Websocket PHP 服务器

android - 在 android 中使用 keyczar

java - 将对象与对象的数组列表进行比较