私のアプリケーションは、Galaxy s4、つまりジェリービーンで動作しません。SimpleCrypto.encrypt
メソッドを使用して、いくつかのデータをデータベースに保存しているだけです。
SimepleCrypto.decrypt
メソッドを使用してこのデータを取得しようとしています。しかし、私はデータを取得しておらず、nullを出力しています。
この問題が私に来ている理由を誰か助けてもらえますか。s2 と s3 では問題なく動作しますが、s4 では期待どおりに動作しません。
public long insertEntry(DeviceInfo _myObject) {
ContentValues contentValues = new ContentValues();
contentValues.put(KEY_NAME, _myObject.getName());
contentValues.put(KEY_ADDR, _myObject.getAddr());
try {
contentValues.put(KEY_ADMINPASSWD, SimpleCrypto.encrypt(SecuRemote.masterpassword,_myObject.getAdminPasswd()));
contentValues.put(KEY_BTPIN, SimpleCrypto.encrypt(SecuRemote.masterpassword,_myObject.getBtPin()));
} catch (Exception e) {
}
String alias = _myObject.getAlias();
if((alias == null) || (alias.equals(""))) {
alias = _myObject.getName();
}
contentValues.put(KEY_ALIAS, alias);
String type = _myObject.getType();
if(type == null) {
type = "";
}
contentValues.put(KEY_TYPE, type);
//SecuRemote.LOG("DEBUG: added device entry: " + _myObject.toString());
return db.insert(DATABASE_TABLE, null, contentValues);
}
データベースからデータを復号化する以下の方法を使用してデータを取得します。
public DeviceInfo getEntry(String addr)
{
if(SecuRemote.superDebug) SecuRemote.LOG( "DeviceInfo getEntry(" + addr + ")");
DeviceInfo rec = new DeviceInfo();
Cursor cursor = db.query(true, DATABASE_TABLE,new String[] {KEY_ID, KEY_NAME, KEY_ADDR, KEY_ADMINPASSWD, KEY_BTPIN, KEY_ALIAS, KEY_TYPE},KEY_ADDR + "= '" + addr + "'",null, null, null, null, null);
if((cursor.getCount() == 0) || !cursor.moveToFirst())
{
SecuRemote.LOG( "No device record found for addr: " + addr);
cursor.close();
return null;
}
rec.setName((cursor.getString(NAME_COLUMN)));
try {
rec.setAdminPasswd(SimpleCrypto.decrypt(SecuRemote.masterpassword, new String(cursor.getString(ADMINPASSWD_COLUMN))));
rec.setBtPin(SimpleCrypto.decrypt(SecuRemote.masterpassword, new String(cursor.getString(BTPIN_COLUMN))));
} catch (Exception e) {
SecuRemote.LOG("Error decrypting device secret passwords");
}
rec.setAddr((cursor.getString(ADDR_COLUMN)));
rec.setVersion(SecuRemote.getPreference("version_"+rec.getAddr(), context));
rec.setAlias((cursor.getString(ALIAS_COLUMN)));
rec.setType((cursor.getString(TYPE_COLUMN)));
SecuRemote.LOG("Record found");
cursor.close();
return rec;
}