当前位置: 首页 > news >正文

LockscreenCredential 类方法详解

LockscreenCredential 是 Android 系统中用于表示锁屏凭证(如 PIN、密码、图案等)的类,它封装了用户设置的解锁凭据,并提供安全的方式来处理和验证这些凭据。这个类主要用于系统锁屏、设备加密以及用户认证等场景。

LockscreenCredential 类方法详解

构造函数和创建方法

私有构造函数

private LockscreenCredential(int type, byte[] credential)

私有构造函数,用于内部创建密码对象。根据类型验证密码数据的有效性并存储引用。

创建不同类型密码的方法

创建空密码
public static LockscreenCredential createNone()

创建表示无密码(空密码)的对象。

创建图案密码
public static LockscreenCredential createPattern(@NonNull List<LockPatternView.Cell> pattern)

基于图案点列表创建图案密码对象。

创建字符密码
public static LockscreenCredential createPassword(@NonNull CharSequence password)

基于字符序列创建密码对象。

创建管理密码
public static LockscreenCredential createManagedPassword(@NonNull byte[] password)

创建用于统一挑战的托管密码对象。

创建PIN码
public static LockscreenCredential createPin(@NonNull CharSequence pin)

基于数字序列创建PIN码对象。

创建密码或空密码
public static LockscreenCredential createPasswordOrNone(@Nullable CharSequence password)

如果输入为空则创建空密码,否则创建字符密码。

创建PIN码或空密码
public static LockscreenCredential createPinOrNone(@Nullable CharSequence pin)

如果输入为空则创建空密码,否则创建PIN码。

密码属性查询方法

获取密码类型

public int getType()

返回密码类型,可以是无密码、图案、PIN或密码类型之一。

获取密码字节数据

public byte[] getCredential()

返回密码的原始字节数据,这是内部字段的直接引用,调用者不应修改它。

类型判断方法

public boolean isNone()      // 是否为空密码
public boolean isPattern()   // 是否为图案密码
public boolean isPin()       // 是否为PIN码
public boolean isPassword()  // 是否为字符密码

获取密码长度

public int size()

返回密码的长度。

密码操作方法

复制密码

public LockscreenCredential duplicate()

创建当前密码的副本。

清零密码

public void zeroize()

将密码字节数据清零,安全地从内存中删除密码。

检查密码长度

public void checkLength()

检查密码是否满足最小长度要求,如果密码太短则抛出异常。

验证密码类型匹配

public boolean checkAgainstStoredType(int storedCredentialType)

检查当前密码类型是否与存储的密码类型匹配。

密码哈希处理方法

生成历史密码哈希

public String passwordToHistoryHash(byte[] salt, byte[] hashFactor)
public static String passwordToHistoryHash(byte[] passwordToHash, byte[] salt, byte[] hashFactor)

使用SHA-256算法为密码历史检查生成密码哈希值。

生成历史密码哈希(旧版)

@Deprecated
public static String legacyPasswordToHash(byte[] password, byte[] salt)

使用SHA-1和MD5算法生成密码哈希值(已弃用,安全性较低)。

序列化方法

写入Parcel

@Override
public void writeToParcel(Parcel dest, int flags)

将密码对象写入Parcel进行序列化。

从Parcel创建对象

public static final Parcelable.Creator<LockscreenCredential> CREATOR

用于从Parcel中创建密码对象的Creator。

描述内容

@Override
public int describeContents()

描述对象内容,始终返回0。

资源管理方法

关闭资源

@Override
public void close()

实现AutoCloseable接口,用于自动清零密码数据。

对象比较方法

计算哈希码

@Override
public int hashCode()

重写hashCode方法,用于对象哈希计算。

判断相等性

@Override
public boolean equals(Object o)

重写equals方法,用于比较两个密码对象是否相等。

辅助方法

确保未被清零

private void ensureNotZeroized()

检查密码是否已被清零,如果已清零则抛出异常。

字符序列转字节数组

private static byte[] charSequenceToByteArray(CharSequence chars)

将字符序列转换为字节数组,避免创建额外副本。

http://www.dtcms.com/a/296715.html

相关文章:

  • 机器学习入门与经典knn算法表文解析
  • 模型的存储、加载和部署
  • 天邑TY1613_S905L3SB_安卓9-高安版和非高安版-线刷固件包
  • SSE与Websocket有什么区别?
  • P1049 [NOIP 2001 普及组] 装箱问题
  • 数据采集分析:从信息洪流中掘金的科学与艺术
  • Linux和Windows基于V4L2和TCP的QT监控
  • 欧姆龙CJ1MPLC配以太网模块,打造上位机、触摸屏、变频器高效通讯生态系统案例
  • 词嵌入维度与多头注意力关系解析
  • C++课设实践项目:C++构建的学籍管理系统
  • 【阿里云-ACP-1】疑难题解析
  • CPU绑核并独占
  • 网络编程之多路复用---mutilio
  • tauri实用教程:阻止除控制台关闭程序外的全部手动关闭
  • 大模型-batch之static batch
  • 基于Matlab图像处理的水果分级系统
  • 【软件与环境】--Visual Studio2022安装教程
  • JMeter压测黑马点评优惠券秒杀的配置及请求爆红问题的解决(详细图解)
  • 在Ubuntu上使用QEMU学习RISC-V程序(2)gdb调试
  • 2025年7月23日 AI 今日头条
  • C++ 基础入门
  • 144. 二叉树的前序遍历
  • rt-thread加一个库
  • matrix-breakout-2-morpheus靶机通关教程
  • Android Studio历史版本快速下载(二次修改记录)
  • Shell的正则表达式
  • (nice!!!)(LeetCode 每日一题) 2322. 从树中删除边的最小分数 (深度优先搜索dfs + 树)
  • linux C -glib库的基本使用
  • 【华为机试】1208. 尽可能使字符串相等
  • 蚁群优化算法(Ant Colony Optimization, ACO)简介