加密用户数据而不会丢失 android 应用程序中的登录用户

Posted

技术标签:

【中文标题】加密用户数据而不会丢失 android 应用程序中的登录用户【英文标题】:Encrypt the user data without loosing logged in user in android app 【发布时间】:2019-06-02 17:43:59 【问题描述】:

我在 Play 商店推出了一款应用。该应用程序具有注册和登录过程。登录后应用程序使用this 库加密用户凭据并将它们存储在共享首选项中,并且在使用凭据直接登录应用程序之前使用相同的库解密凭据,而无需一次又一次地输入用户名和密码。但我认为这个库不适合我的加密和解密应用程序,所以我找到了一种方法。我用 C++ 编写了用于加密和解密的代码,并且代码运行良好。现在我想将此逻辑添加到我现有的应用程序中,并在不丢失之前登录用户的情况下在 Play 商店中更新我的应用程序。我怎样才能实现这个逻辑。任何小提示将不胜感激。我发现的其中一个逻辑是,如果下载了此版本的应用程序,则退出用户,但客户端不满足此逻辑。

【问题讨论】:

如果您不想清除preferences,那么唯一的方法是从preferences 获取所有数据解密并再次使用新算法保存。此代码只能针对此版本的应用运行一次。 是的,我和我的团队试图用类似的逻辑来解决这个问题,但是每次用户启动应用程序时都会运行这个过程。 可以手动清除持久存储。您可以通过在SharePreference 中保存boolean 来降低每次调用它的机会。 您可能想要存储一个版本而不是 boolean,因为您可能希望在将来的某个时间更改算法,版本控制将帮助您了解是否重新是否需要对存储的数据进行加密。 【参考方案1】:

这里有适合您的解决方案。

    在您的加密方法中,在加密时为加密数据添加一些前缀,以便您判断数据是否已经加密。 在解密期间,如果数据中存在前缀,则表示数据已加密,您需要对其进行解密,否则您可以继续进行。

注意:请为您的包名添加一些独特的前缀,这样它在保存在 pref 中的数据中出现的机会就会减少。

【讨论】:

我认为你误解了 OP 的问题 @TejasPandya,我认为他的主要问题是检测天气 pref 中的值是否被他的算法加密。这样他就可以轻松地检测天气,应该使用他的算法或使用特定的库来解密该值。这解决了他不注销用户的问题。

以上是关于加密用户数据而不会丢失 android 应用程序中的登录用户的主要内容,如果未能解决你的问题,请参考以下文章

使用 PVC 加密 EBS 卷而不会在 Kubernetes 内丢失数据

在后台刷新 vb6 表单而不会丢失用户输入的数据

PHP自动刷新页面而不会丢失用户输入

将第二个活动的价值保存到第一个活动,而不会丢失更新的数据

如何在事件订阅者中访问 Symfony 3.3 中的登录用户而不会丢失 Web Profiler

如何在事件订阅者中访问Symfony 3.3中的登录用户,而不会丢失Web分析器