Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android应用程序中加密用户数据而不丢失登录用户_Android_C++_Encryption_Android Ndk - Fatal编程技术网

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

在android应用程序中加密用户数据而不丢失登录用户,android,c++,encryption,android-ndk,Android,C++,Encryption,Android Ndk,我在play store上发布了一个应用程序。该应用程序具有注册和登录过程。登录后,应用程序将使用库对用户凭据进行加密并将其存储在共享首选项中,并且在使用凭据直接登录到应用程序之前,将使用相同的库对凭据进行解密,而无需反复输入用户名和密码。但我认为这个库不适合我的加密和解密应用程序,所以我找到了一种方法。我用C++编写了密码加密解密,代码工作正常。现在我想将此逻辑添加到我现有的应用程序中,并在play store上更新我的应用程序,而不丢失以前登录的用户。我怎样才能达到这个逻辑呢。任何小小的暗示

我在play store上发布了一个应用程序。该应用程序具有注册和登录过程。登录后,应用程序将使用库对用户凭据进行加密并将其存储在共享首选项中,并且在使用凭据直接登录到应用程序之前,将使用相同的库对凭据进行解密,而无需反复输入用户名和密码。但我认为这个库不适合我的加密和解密应用程序,所以我找到了一种方法。我用C++编写了密码加密解密,代码工作正常。现在我想将此逻辑添加到我现有的应用程序中,并在play store上更新我的应用程序,而不丢失以前登录的用户。我怎样才能达到这个逻辑呢。任何小小的暗示都将不胜感激。我发现的一个逻辑是,如果下载了此版本的应用程序,则会注销用户,但客户端不满足此逻辑。

以下是解决方案

  • 在加密过程中,在加密方法中为加密的数据添加一些前缀,以便确定数据是否已加密
  • 在解密过程中,如果前缀存在于数据中,则表示该前缀已加密,您需要对其进行解密,否则您可以继续
    注意:请将前缀设置为一些唯一的,如包名,这样它在pref中保存的数据中出现的可能性就比较小。

    如果您不想清除
    首选项
    ,那么唯一的方法就是从
    首选项
    中获取所有数据,对其进行解密,然后用新算法再次保存。对于此版本的应用程序,此代码只能运行一次。Ya I和我的团队试图用类似的逻辑找出答案,但此过程将在用户每次启动应用程序时运行。可以手动清除持久存储。您可以通过在
    SharePreference
    中保存
    boolean
    来降低每次调用此函数的机会。您可能希望存储一个版本,而不是
    boolean
    ,因为您可能希望在将来某个时候更改算法,版本控制将帮助您了解是否有必要对存储数据进行重新加密。我认为您误解了OPquestion@TejasPandya,我认为他的主要问题是检测pref中的值是否由他的算法加密。因此,他可以很容易地检测出是否应该使用他的算法或使用特定的库对值进行解密。这解决了他不注销用户的问题。