【发布时间】:2021-06-12 20:01:11
【问题描述】:
在我的项目中,有一个登录系统,其中用户名、电子邮件和密码存储在 android room 的 sqlite 数据库中。它们都通过 android Chiper 算法进行哈希处理,然后通过类型转换器转换为 String 到数据库。但我无法将它们与以下语句进行比较,它只会返回 null...
那么我如何正确比较那些字节[]?还是应该这样工作而我的错误在其他地方?
@Query("select passwordHashed from login where userHashed = :userHashGiven")
byte[] getPasswordHashByUserHash(userHashGiven byte[])
我的 TypeConverter 和 Login 对象如下所示:
@TypeConverter
fun stringToBytes(s: String) : ByteArray {
return s.toByteArray(EncrypterUtil.charset)
}
@TypeConverter
fun bytesToString(bytes: ByteArray) : String {
return String(bytes, EncrypterUtil.charset)
}
@Entity(tableName = "login")
public class Login {
@NonNull
@PrimaryKey
private byte[] userHashed;
@ColumnInfo
private byte[] emailHashed;
@ColumnInfo
private byte[] passwordHashed;
@ColumnInfo
private int biometric;
public Login(@NotNull byte[] userHashed, byte[] emailHashed, byte[] passwordHashed, int biometric) {
this.userHashed = userHashed;
this.emailHashed = emailHashed;
this.passwordHashed = passwordHashed;
this.biometric = biometric;
}
@NonNull
public byte[] getUserHashed() {
return userHashed;
}
public void setUserHashed(@NonNull byte[] userHashed) {
this.userHashed = userHashed;
}
public byte[] getEmailHashed() {
return emailHashed;
}
public void setEmailHashed(byte[] emailHashed) {
this.emailHashed = emailHashed;
}
public byte[] getPasswordHashed() {
return passwordHashed;
}
public void setPasswordHashed(byte[] passwordHashed) {
this.passwordHashed = passwordHashed;
}
public int getBiometric() {
return biometric;
}
public void setBiometric(int biometric) {
this.biometric = biometric;
}
【问题讨论】:
标签: android arrays database sqlite android-room