干货|加密shared_prefs/xml中的内容防窃取

Secure Preferences用来加密Android上的Shared Preferences防止安全防护不足的情况下被窃取

图片

https://github.com/scottyab/secure-preferences
https://github.com/scottyab/secure-preferences/releases
git clone https://github.com/scottyab/secure-preferences.git

图片

图片

编译secure-preferences源码中的library模块生成了library-debug.aar

secure-preferences\library\build\outputs\aar\library-debug.aar

图片

Android项目中引用secure-preferences加密模块

library-debug.aar
或
implementation 'com.scottyab:secure-preferences-lib:0.1.7'

图片

图片

@DebugLog
public SharedPreferences getSharedPreferences() {
  if(mSecurePrefs==null){
    mSecurePrefs = new SecurePreferences(this, "", "my_prefs.xml");
    SecurePreferences.setLoggingEnabled(true);
  }
  return mSecurePrefs;
}

@DebugLog
public SharedPreferences getSharedPreferences1000() {
  try {
    AesCbcWithIntegrity.SecretKeys myKey = AesCbcWithIntegrity.generateKeyFromPassword(Build.SERIAL,AesCbcWithIntegrity.generateSalt(),1000);
    return new SecurePreferences(this, myKey, "my_prefs_1000.xml");
  } catch (GeneralSecurityException e) {
    Log.e(TAG, "Failed to create custom key for SecurePreferences", e);
  }
  return null;
}

图片

@DebugLog
public SharedPreferences getDefaultSharedPreferences() {
  return PreferenceManager.getDefaultSharedPreferences(this);
}

@DebugLog
public SecurePreferences getUserPinBasedSharedPreferences(String password){
  if(mUserPrefs==null) {
    mUserPrefs = new SecurePreferences(this, password, "user_prefs.xml");
  }
  return mUserPrefs;
}

@DebugLog
public boolean changeUserPrefPassword(String newPassword){
  if(mUserPrefs!=null){
    try {
      mUserPrefs.handlePasswordChange(newPassword, this);
      return true;
    } catch (GeneralSecurityException e) {
      Log.e(TAG, "Error during password change", e);
    }
  }
  return false;
}

Android系统本地/data/data/XXXXXX/shared_prefs目录里xml文件加密后的效果图

图片

XML using Standard Android SharedPreferences

<map>
    <int name="timeout" value="500" />
    <boolean name="is_logged_in" value="true" />
</map>

XML with SecurePreferences

<map>
    <string name="TuwbBU0IrAyL9znGBJ87uEi7pW0FwYwX8SZiiKnD2VZ7">
        pD2UhS2K2MNjWm8KzpFrag==:MWm7NgaEhvaxAvA9wASUl0HUHCVBWkn3c2T1WoSAE/g=rroijgeWEGRDFSS/hg
    </string>
    <string name="8lqCQqn73Uo84Rj">k73tlfVNYsPshll19ztma7U">
        pD2UhS2K2MNjWm8KzpFrag==:MWm7NgaEhvaxAvA9wASUl0HUHCVBWkn3c2T1WoSAE/g=:jWm8KzUl0HUHCVBWkn3c2T1WoSAE/g=
    </string>
</map>

图片

implementation 'com.scottyab:secure-preferences-lib:0.1.7'

干货|Android免Root最全Hook插件(Hook任意App)

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哆啦安全

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值