鸿蒙HarmonyOS开发实战—安全管理(生物特征识别开发)_鸿蒙os人脸识别开发(1)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

约束与限制
  • 当前版本提供的生物特征识别能力只包含人脸识别,且只支持本地认证,不提供认证界面。
  • 要求设备上具备摄像器件,且人脸图像像素大于100*100。
  • 要求设备上具有TEE安全环境,人脸特征信息高强度加密保存在TEE中。
  • 对于面部特征相似的人、面部特征不断发育的儿童,人脸特征匹配率有所不同。如果对此担忧,可考虑其他认证方式。
生物特征识别开发
场景介绍

当前生物特征识别支持2D人脸识别、3D人脸识别,可应用于设备解锁、应用登录、支付等身份认证场景。

接口说明

BiometricAuthentication类提供了生物认证的相关方法,包括检测认证能力、认证和取消认证等,用户可以通过人脸等生物特征信息进行认证操作。在执行认证前,需要检查设备是否支持该认证能力,具体指认证类型、安全级别和是否本地认证。如果不支持,需要考虑使用其他认证能力。

接口名功能描述
getInstance(Ability ability)获取BiometricAuthentication的单例对象。
checkAuthenticationAvailability(AuthType type, SecureLevel level, boolean isLocalAuth)检测设备是否具有生物认证能力。
execAuthenticationAction(AuthType type, SecureLevel level, boolean isLocalAuth,boolean isAppAuthDialog, SystemAuthDialogInfo information)调用者使用该方法进行生物认证。
getAuthenticationTips()获取生物认证过程中的提示信息。
cancelAuthenticationAction()取消生物认证操作。
setSecureObjectSignature(Signature sign)设置需要关联认证结果的Signature对象,在进行认证操作后,如果认证成功则Signature对象被授权可以使用。设置前Signature对象需要正确初始化,且配置为认证成功才能使用。
getSecureObjectSignature()在认证成功后,可通过该方法获取已授权的Signature对象。如果未设置过Signature对象,则返回null。
setSecureObjectCipher(Cipher cipher)设置需要关联认证结果的Cipher对象,在进行认证操作后,如果认证成功则Cipher对象被授权可以使用。设置前Cipher对象需要正确初始化,且配置为认证成功才能使用。
getSecureObjectCipher()在认证成功后,可通过该方法获取已授权的Cipher对象。如果未设置过Cipher对象,则返回null。
setSecureObjectMac(Mac mac)设置需要关联认证结果的Mac对象,在进行认证操作后,如果认证成功则Mac对象被授权可以使用。设置前Mac对象需要正确初始化,且配置为认证成功才能使用。
getSecureObjectMac()在认证成功后,可通过该方法获取已授权的Mac对象。如果未设置过Mac对象,则返回null。
开发步骤

开发前请完成以下准备工作:

  1. 在应用配置权限文件中,增加ohos.permission.ACCESS_BIOMETRIC的权限声明。
  2. 在使用生物特征识别认证能力的代码文件中增加import ohos.biometrics.authentication.BiometricAuthentication。

开发过程:

  1. 获取BiometricAuthentication的单例对象,代码示例如下:
BiometricAuthentication  biometricAuthentication = BiometricAuthentication.getInstance(MainAbility.mAbility);

复制

  1. 检测设备是否具有生物认证能力:

2D人脸识别建议使用SECURE_LEVEL_S2,3D人脸识别建议使用SECURE_LEVEL_S3。代码示例如下:

int retChkAuthAvb = biometricAuthentication.checkAuthenticationAvailability(
    BiometricAuthentication.AuthType.AUTH_TYPE_BIOMETRIC_FACE_ONLY, 
    BiometricAuthentication.SecureLevel.SECURE_LEVEL_S2, true);

复制

  1. (可选)设置需要关联认证结果的Signature对象或Cipher对象或Mac对象,代码示例如下
// 定义一个Signature对象sign;
biometricAuthentication.setSecureObjectSignature(sign);

// 定义一个Cipher对象cipher;
biometricAuthentication.setSecureObjectCipher(cipher);

// 定义一个Mac对象mac;
biometricAuthentication.setSecureObjectMac(mac);

复制

  1. 在新线程里面执行认证操作,避免阻塞其他操作,代码示例如下:
new Thread(new Runnable() {
    @Override
    public void run() {
        int retExcAuthretExcAuth = biometricAuthentication.execAuthenticationAction( 
            BiometricAuthentication.AuthType.AUTH_TYPE_BIOMETRIC_FACE_ONLY, 
            BiometricAuthentication.SecureLevel.SECURE_LEVEL_S2, true, false, null);
    }
}).start();

复制

  1. 获得认证过程中的提示信息,代码示例如下:
AuthenticationTips tips = biometricAuthentication.getAuthenticationTips();

复制

  1. (可选)认证成功后获取已设置的Signature对象或Cipher对象或Mac对象,代码示例如下:
Signature sign = biometricAuthentication.getSecureObjectSignature();

Cipher cipher = biometricAuthentication.getSecureObjectCipher();

Mac mac = biometricAuthentication.getSecureObjectMac();

复制

  1. 认证过程中取消认证,代码示例如下:
int ret = biometricAuthentication.cancelAuthenticationAction();

最后,为了能让大家更好的去学习提升鸿蒙 (Harmony OS) 开发技术,小编连夜整理了一份30个G纯血版学习资料(含视频电子书学习文档等)以及一份在Github上持续爆火霸榜的《纯血版华为鸿蒙 (Harmony OS)开发手册》(共计890页),希望对大家有所帮助。

纯血版鸿蒙 HarmonyOS 4.0 视频学习资料

需要以上视频学习资料小伙伴

请点击→纯血版全套鸿蒙HarmonyOS学习资料


《纯血版华为鸿蒙 (Harmony OS)开发手册》

这份手册涵盖了当前鸿蒙 (Harmony OS) 开发技术必掌握的核心知识点

本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。

最近遍览了各种网络安全类的文章,内容参差不齐,其中不伐有大佬倾力教学,也有各种不良机构浑水摸鱼,在收到几条私信,发现大家对一套完整的系统的网络安全从学习路线到学习资料,甚至是工具有着不小的需求。

最后,我将这部分内容融会贯通成了一套282G的网络安全资料包,所有类目条理清晰,知识点层层递进,需要的小伙伴可以点击下方小卡片领取哦!下面就开始进入正题,如何从一个萌新一步一步进入网络安全行业。

学习路线图

其中最为瞩目也是最为基础的就是网络安全学习路线图,这里我给大家分享一份打磨了3个月,已经更新到4.0版本的网络安全学习路线图。

相比起繁琐的文字,还是生动的视频教程更加适合零基础的同学们学习,这里也是整理了一份与上述学习路线一一对应的网络安全视频教程。

网络安全工具箱

当然,当你入门之后,仅仅是视频教程已经不能满足你的需求了,你肯定需要学习各种工具的使用以及大量的实战项目,这里也分享一份我自己整理的网络安全入门工具以及使用教程和实战。

项目实战

最后就是项目实战,这里带来的是SRC资料&HW资料,毕竟实战是检验真理的唯一标准嘛~

面试题

归根结底,我们的最终目的都是为了就业,所以这份结合了多位朋友的亲身经验打磨的面试题合集你绝对不能错过!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 10
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个非常广泛和复杂的主题,需要用到多种技术和工具来实现。以下是一个简单的示例代码,演示了如何在 Unity AR 中自动识别人脸并应用换脸效果: ```c# using UnityEngine; using UnityEngine.XR.ARFoundation; using UnityEngine.XR.ARSubsystems; public class FaceDetector : MonoBehaviour { public ARFaceManager faceManager; public GameObject[] faceModels; private void OnEnable() { faceManager.facesChanged += OnFacesChanged; } private void OnDisable() { faceManager.facesChanged -= OnFacesChanged; } private void OnFacesChanged(ARFacesChangedEventArgs args) { foreach (var face in args.added) { // 获取脸部特征点的位置 Vector3[] facePoints = face.vertices; // 获取脸部的旋转和缩放信息 Quaternion faceRotation = face.transform.rotation; Vector3 faceScale = face.transform.localScale; // 根据脸部特征点的位置,计算出脸部的中心点 Vector3 faceCenter = Vector3.zero; foreach (var point in facePoints) { faceCenter += point; } faceCenter /= facePoints.Length; // 根据脸部的中心点,计算出应该使用的换脸模型 int modelIndex = Mathf.FloorToInt(faceCenter.x / Screen.width * faceModels.Length); // 将换脸模型应用到脸部上 var faceModel = Instantiate(faceModels[modelIndex], face.transform.position, faceRotation, face.transform); faceModel.transform.localScale = faceScale; } foreach (var face in args.updated) { // 更新脸部的旋转和缩放信息 face.transform.rotation = face.transform.rotation; face.transform.localScale = face.transform.localScale; } foreach (var face in args.removed) { // 移除脸部上的换脸模型 Destroy(face.transform.GetChild(0).gameObject); } } } ``` 该代码使用了 Unity ARFoundation 和 ARSubsystems 库,以及 ARFaceManager 组件,监测相机捕捉到的人脸,并将指定的换脸模型应用到人脸上。具体实现过程中,需要根据实际情况进行适当的修改和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值