我想把密码保存在 SharedPreferences 中,所以我先像下面的代码一样私下实现了
public class PrefManager {
private SharedPreferences pref;
private SharedPreferences.Editor editor;
public PrefManager(Context context) {
pref = context.getSharedPreferences("PROJECT_NAME", Context.MODE_PRIVATE);
editor = pref.edit();
}
}
为了保存密码,我使用了一种算法来加密和解密
加密算法
public void setPassword(String password) {
int len = password.length();
len /= 2;
StringBuilder b1 = new StringBuilder(password.substring(0, len));
StringBuilder b2 = new StringBuilder(password.substring(len));
b1.reverse();
b2.reverse();
password = b1.toString() + b2.toString();
editor.putString("password", password);
editor.apply();
}
解密算法
public String getPassword() {
String password = pref.getString("password", null);
int len = password.length();
len /= 2;
StringBuilder b1 = new StringBuilder(password.substring(0, len));
StringBuilder b2 = new StringBuilder(password.substring(len));
password = b1.reverse().toString() + b2.reverse().toString();
return password;
}
注意:
在这个简单的算法中,我把密码从中间分成两部分,把它倒过来,然后放回去。这只是一个想法,您可以使用您自己的算法来更改密码的保存方式。 p>
完整代码
import android.content.Context;
import android.content.SharedPreferences;
public class PrefManager {
private SharedPreferences pref;
private SharedPreferences.Editor editor;
public PrefManager(Context context) {
pref = context.getSharedPreferences("PROJECT_NAME", Context.MODE_PRIVATE);
editor = pref.edit();
}
public String getPassword() {
String password = pref.getString("password", null);
int len = password.length();
len /= 2;
StringBuilder b1 = new StringBuilder(password.substring(0, len));
StringBuilder b2 = new StringBuilder(password.substring(len));
password = b1.reverse().toString() + b2.reverse().toString();
return password;
}
public void setPassword(String password) {
int len = password.length();
len /= 2;
StringBuilder b1 = new StringBuilder(password.substring(0, len));
StringBuilder b2 = new StringBuilder(password.substring(len));
b1.reverse();
b2.reverse();
password = b1.toString() + b2.toString();
editor.putString("password", password);
editor.apply();
}
}