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

函数加密(Functional Encryption)简介

1. 引言

函数加密(FE)可以被看作是公钥加密(PKE)的一种推广,它允许对第三方的解密能力进行更细粒度的控制。

在公钥加密中,公钥 p k \mathit{pk} pk 用于将某个值 x x x 加密为密文 c t \mathit{ct} ct(通过加密算法),而私钥 s k \mathit{sk} sk 用于从密文 c t \mathit{ct} ct 中恢复出 x x x(通过解密算法)。公钥加密强制执行一种“全有或全无”的访问规则:

  • 要么能够解密并读取完整明文,
  • 要么完全无法获得任何关于明文的信息。

而在函数加密中:

  • 私钥 s k f \mathit{sk_f} skf 与某个特定的函数 f f f 相关联,使得解密函数返回的是 f ( x ) f(x) f(x)
    • 可注意到,通过将 f f f 设置为恒等函数(即 f ( x ) = x f(x)=x f(x)=x),公钥加密就可以被看作是函数加密的一个特例。

更明确地说,如下图所示是 公钥加密 和 函数加密 这两种加密协议的不同“API”接口。函数加密:

  • 初始化阶段会生成一个主私钥 m s k \mathit{msk} msk
  • 在密钥生成阶段,可以利用该主私钥针对特定函数 f f f 派生出函数私钥 s k f \mathit{sk_f} skf
  • 加密算法的逻辑相同,而解密操作则需要函数私钥 s k f \mathit{sk_f} skf 来得到 f ( x ) f(x) f(x)
    在这里插入图片描述

非正式地说,一个函数加密方案的安全性要求对手除了 f ( x ) f(x) f(x) 所泄露的信息外,无法从密文中获得关于 x x x 的任何其他信息。BSW10——2010年Dan Boneh等人 Functional Encryption: Definitions and Challenges论文 中提供了对此类方案更正式的安全性定义。稍后会尝试更详细地解释它。现在,先通过一个示例应用来巩固对该加密方案的理解。

2. FE(函数加密)应用示例

来看一个医院的例子:医院保管着大量病人的记录,并且存在 n n n 类具有不同访问权限的专业人员。在这种场景下,医院管理方首先执行初始化阶段(setup),然后为每一个函数 f 1 , … , f i , … , f n f_1, \dots, f_i, \dots, f_n f1,,fi,,fn 创建对应的函数私钥 s k f 1 , … , s k f i , … , s k f n \mathit{sk_{f_1}}, \dots, \mathit{sk_{f_i}}, \dots, \mathit{sk_{f_n}} skf1,,skfi,,skfn,其中每个函数 f i f_i fi 表示对病历数据的一种特定访问策略。随后,管理方将各个函数私钥分发给相应类别的专业人员。

病人的记录通过 p k \mathit{pk} pk 加密后,每位专业人员都只能通过解密函数获得其权限范围内的信息,而无法访问其他内容。

在这种设置中,医院只需生成一份加密的病历记录,便可支持多种访问级别。这比传统的对称加密或非对称加密方式更加高效——后者通常需要为每一类用户执行 n n n 次加密操作。

3. 函数加密与全同态加密的区别

如果熟悉全同态加密(FHE),那么分析FHE与函数加密(FE)之间的异同会非常有趣。这两种密码学原语都支持在加密数据上执行函数,但它们的设置方式和应用场景完全不同。

典型的 FHE 应用场景适用于计算外包,其流程如下:

  • Alice 执行初始化并将她的数据 x x x 加密为密文 c t \mathit{ct} ct,然后将该密文发送给 Bob
  • Bob 在密文 c t \mathit{ct} ct 上计算函数 f f f,得到新的密文 c t ′ \mathit{ct'} ct,并将其结果返回给 Alice
  • Alice 解密密文,得到 f ( x ) f(x) f(x)
    在这里插入图片描述

函数加密与全同态加密的区别有:

  • 1)可应用于加密数据上的函数 f f f 的差别:
    • 在全同态加密(FHE)中,被应用于加密数据上的函数 f f f(即评估阶段)是任意的
      • Bob 可以在密文 c t \mathit{ct} ct 上执行任意算术函数,这个函数也可以是 Alice 私有的。
    • 相比之下,在函数加密(FE)中,可在密文上执行的函数集受限于主私钥生成的函数私钥
  • 2)评估与解密阶段的差别:
    • FHE 的评估函数返回的是另一个密文,需要 Alice 进一步参与解密。
    • 而在 FE 中,评估和解密是同时进行的,不需要进一步的交互即可获得 f ( x ) f(x) f(x)

简而言之:

  • FHE:始终需要与密钥持有者交互才能获得 f ( x ) f(x) f(x),但函数 f f f任意的(甚至可以是私密的)
  • FE:不需要与密钥持有者交互就能获得 f ( x ) f(x) f(x),但可执行的函数 f f f受限的

4. FE 的安全性定义

函数加密的安全性是在可选择明文攻击下的不可区分性(IND-CPA)概念下定义的。这个安全性通过一个对手 A \mathcal{A} A 和挑战者之间的博弈进行证明。该博弈的逻辑类似于用于证明公钥加密方案语义安全性的方式,如下所示:
在这里插入图片描述

先分析 PKE 的情形。对于 b = 0 , 1 b = 0,1 b=0,1,实验 E x p ( b ) \mathsf{Exp}(b) Exp(b) 的流程如下:

  • 挑战者使用函数 G ( ) G() G() 生成密钥对 ( p k , s k ) (\mathit{pk}, \mathit{sk}) (pk,sk),并将 p k \mathit{pk} pk 提供给对手 A \mathcal{A} A
  • A \mathcal{A} A 得到公钥 p k \mathit{pk} pk
  • A \mathcal{A} A 选择两条等长的消息 m 0 m_0 m0 m 1 m_1 m1,并将它们发送给挑战者
  • 挑战者使用公钥加密消息 m b m_b mb(其中 b ∈ { 0 , 1 } b \in \{0,1\} b{0,1},但 A \mathcal{A} A 并不知道 b b b 的值): c ← E ( p k , m b ) \mathit{c} \leftarrow E(\mathit{pk}, m_b) cE(pk,mb)
  • A \mathcal{A} A 得到密文 c \mathit{c} c 并输出一个猜测值 b ′ ∈ 0 , 1 b' \in {0,1} b0,1

如果没有任何高效(多项式时间)对手 A \mathcal{A} A 能够区分 m 0 m_0 m0 m 1 m_1 m1 的加密密文,则该加密方案 E \mathcal{E} E(由其函数 ( G , E , D ) (G, E, D) (G,E,D) 定义)在语义安全意义下是安全的。数学上,这被表示为:
∣ Pr ⁡ [ E X P ( 0 ) = 1 ] − Pr ⁡ [ E X P ( 1 ) = 1 ] ∣ < negligible \left| \Pr[\mathsf{EXP}(0) = 1] - \Pr[\mathsf{EXP}(1) = 1] \right| < \text{negligible} Pr[EXP(0)=1]Pr[EXP(1)=1]<negligible

其中, Pr ⁡ [ E X P ( 0 ) = 1 ] \Pr[\mathsf{EXP}(0) = 1] Pr[EXP(0)=1] 表示对手在实验 0 中输出 1 的概率(即错误地猜测加密的是 m 1 m_1 m1),而 Pr ⁡ [ E X P ( 1 ) = 1 ] \Pr[\mathsf{EXP}(1) = 1] Pr[EXP(1)=1] 表示对手在实验 1 中正确输出 1 的概率。

换句话说,对手正确猜出被加密消息的概率应该非常接近于随机猜测的概率。实际中,这确保了对手即使能选择被加密的消息,也无法通过观察密文来获取关于明文的任何信息。

正如 Morrolan 所指出的:

  • 当且仅当加密方案是非确定性的,这种安全属性才成立。

也就是说:

  • 在同一个公钥下,对相同明文的两次加密操作应该以压倒性概率产生不同的密文

在函数加密(FE)中,博弈仅有些许不同。对于 b = 0 , 1 b = 0,1 b=0,1,实验 E X P ( b ) \mathsf{EXP}(b) EXP(b) 的过程如下:

  • 挑战者生成密钥对 ( p k , m s k ) (\mathit{pk}, \mathit{msk}) (pk,msk) 并将其交给对手 A \mathcal{A} A
  • A \mathcal{A} A 可自适应地向挑战者提交不同的函数 f 1 , f 2 , … , f i f_1, f_2, \dots, f_i f1,f2,,fi,并接收相应的函数私钥 s k f 1 , s k f 2 , … , s k f i \mathit{sk_{f_1}}, \mathit{sk_{f_2}}, \dots, \mathit{sk_{f_i}} skf1,skf2,,skfi
  • 然后, A \mathcal{A} A 选择两个消息 m 1 m_1 m1 m 2 m_2 m2,满足对于所有已查询的函数 f i f_i fi,都有 f i ( m 1 ) = f i ( m 2 ) f_i(m_1) = f_i(m_2) fi(m1)=fi(m2),并将它们提供给挑战者
  • 挑战者用公钥加密消息 m b m_b mb(其中 b ∈ 0 , 1 b \in {0,1} b0,1,但 A \mathcal{A} A 并不知道 b b b 的值): c ← E ( p k , m b ) \mathit{c} \leftarrow E(\mathit{pk}, m_b) cE(pk,mb)
  • A \mathcal{A} A 得到密文 c \mathit{c} c,并输出一个猜测 b ′ ∈ 0 , 1 b' \in {0,1} b0,1

对手可以使用其函数私钥对密文 c \mathit{c} c 解密并得到 f ( m b ) f(m_b) f(mb),但与之前类似,无法判断密文 c \mathit{c} c 是对 m 1 m_1 m1 还是 m 2 m_2 m2 的加密 。这正是所描述的安全性定义的体现。

更进一步地,BSW10——2010年Dan Boneh等人 Functional Encryption: Definitions and Challenges论文 中指出:

  • 上述安全定义对于某些特定函数 f f f 是不充分的,并在论文中提出了更为严格的安全性定义。

5. 总结

除了在实际应用中对加密数据进行计算的显著作用,正如本文所描述的那样,函数加密在密码学理论中也已成为一种强有力的工具。它可用于构建更高级的密码原语,如 不可区分混淆(iO),iO被认为是“密码学完备”的:

  • 几乎可以实现所有已知的密码原语。

特别地,根据 Sora 的 Introduction to Indistinguishability/Ideal Obfuscation(iO)可知:

  • iO 可以通过递归函数加密(recursive FE)来构建

参考资料

[1] Leku 2024年11月25日博客 A gentle introduction to functional encryption

相关文章:

函数加密(Functional Encryption)简介

1. 引言 函数加密&#xff08;FE&#xff09;可以被看作是公钥加密&#xff08;PKE&#xff09;的一种推广&#xff0c;它允许对第三方的解密能力进行更细粒度的控制。 在公钥加密中&#xff0c;公钥 p k \mathit{pk} pk 用于将某个值 x x x 加密为密文 c t \mathit{ct} c…...

思维链实现 方式解析

思维链的实现方式 思维链的实现方式除了提示词先后顺序外,还有以下几种: 增加详细的中间步骤提示:通过提供问题解决过程中的详细中间步骤提示,引导模型逐步推导和思考。例如,在解决数学证明题时,提示词可以具体到每一步需要运用的定理、公式以及推理的方向,帮助模型构建…...

深入学习Zookeeper的知识体系

目录 1、介绍 1.1、CAP 理论 1.2、BASE 理论 1.3、一致性协议ZAB 1、介绍 2、角色 3、ZXID和myid 4、 历史队列 5、协议模式 6、崩溃恢复模式 7、脑裂问题 2、zookeeper 2.1、开源项目 2.2、功能 2.3、选举机制 3、数据模型 3.1、介绍 3.2、znode分类 4、监听…...

电商平台一站式安全防护架构设计与落地实践

引言&#xff1a;安全即业务&#xff0c;防御即增长 国际权威机构 Forrester 最新报告指出&#xff0c;2024 年全球电商平台因安全防护不足导致的直接营收损失高达 $180 亿&#xff0c;而采用一体化防护方案的头部企业客户留存率提升 32%。本文基于 10 万 节点防护实战数据&a…...

【Pandas】pandas DataFrame cummin

Pandas2.2 DataFrame Computations descriptive stats 方法描述DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值DataFrame.all([axis, bool_only, skipna])用于判断 DataFrame 中是否所有元素在指定轴上都为 TrueDataFrame.any(*[, axis, bool_only, skipna])用于判断…...

奇妙小博客

import matplotlib.pyplot as plt# 定义顶点坐标 A [0, 0] B [6, 1] C [4, 6] P [4, 3]# 绘制三角形 ABC plt.plot([A[0], B[0], C[0], A[0]], [A[1], B[1], C[1], A[1]], b-, labelTriangle ABC) # 绘制点 P plt.scatter(P[0], P[1], colorr, labelPoint P(4,3))# 标注顶点…...

嵌入式学习笔记 - HAL_ADC_ConfigChannel函数解析

贴函数原型&#xff1a; 一 首先配置规则通道序列 其实所有的配置函数都是在对寄存器进行操作&#xff0c;要想看懂Hal库底层函数驱动就先把寄存器如何配置看懂&#xff0c;以下是配置规则通道寄存器的介绍&#xff0c;以ADC_SQR3为例&#xff0c;也就是通道序列1到序列6&…...

Java反射详细介绍

的反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时动态获取类的信息、操作类的成员&#xff08;属性、方法、构造器&#xff09;&#xff0c;甚至修改类的行为。它是框架开发&#xff08;如 Spring、MyBatis&#xff09;、单元测试工具&a…...

2025年土木建筑与水利工程国际会议(ICCHE 2025)

2025 International Conference on Civil and Hydraulic Engineering (ICCHE 2025) &#xff08;一&#xff09;会议信息 会议简称&#xff1a;ICCHE 2025 大会地点&#xff1a;中国银川 投稿邮箱&#xff1a;icchesub-paper.com 收录检索&#xff1a;提交Ei Compendex,CPCI,C…...

适应性神经树:当深度学习遇上决策树的“生长法则”

1st author: Ryutaro Tanno video: Video from London ML meetup paper: Adaptive Neural Trees ICML 2019 code: rtanno21609/AdaptiveNeuralTrees: Adaptive Neural Trees 背景 在机器学习领域&#xff0c;神经网络&#xff08;NNs&#xff09;凭借其强大的表示学习能力&…...

IBM BAW(原BPM升级版)使用教程第十四讲

续前篇&#xff01; 一、流程设计中的编程 在 IBM Business Automation Workflow (BAW) 中&#xff0c;编程部分涵盖了多种技术、工具和策略&#xff0c;帮助用户定制和扩展流程。BAW 主要通过脚本、集成、服务和自定义代码来实现流程的灵活性和定制化。下面将详细讲解 BAW …...

【计算机网络 第8版】谢希仁编著 第四章网络层 题型总结3 SDN OpenFlow

SDN OpenFlow题型 这题其实&#xff0c;认真看书P196-197的例子也不难理解。我个人认为所谓防自学设计主要就是你没看懂这张图的时候就是天书&#xff0c;你知道怎么读这张图的时候就很简单。不过我相信这个用心一点应该也都是能懂的。 题目 4.66-4.69 4-66 我最大的一个问题…...

【React中函数组件和类组件区别】

在 React 中,函数组件和类组件是两种构建组件的方式,它们在多个方面存在区别,以下详细介绍: 1. 语法和定义 类组件:使用 ES6 的类(class)语法定义,继承自 React.Component。需要通过 this.props 来访问传递给组件的属性(props),并且通常要实现 render 方法返回 JSX…...

多线程代码案例-1 单例模式

单例模式 单例模式是开发中常见的设计模式。 设计模式&#xff0c;是我们在编写代码时候的一种软性的规定&#xff0c;也就是说&#xff0c;我们遵守了设计模式&#xff0c;代码的下限就有了一定的保证。设计模式有很多种&#xff0c;在不同的语言中&#xff0c;也有不同的设计…...

langChain存储文档片段,并进行相似性检索

https://python.langchain.ac.cn/docs/how_to/document_loader_pdf/#vector-search-over-pdfs 这段代码展示了如何使用LangChain框架中的InMemoryVectorStore和OpenAIEmbeddings来存储文档片段&#xff0c;并基于提供的查询进行相似性搜索。下面是对每一行代码的详细解释&…...

MQTT协议技术详解:深入理解物联网通信基础

MQTT协议技术详解&#xff1a;深入理解物联网通信基础 1. MQTT协议概述 MQTT (Message Queuing Telemetry Transport) 是一种轻量级的发布/订阅消息传输协议&#xff0c;专为资源受限设备和低带宽、高延迟或不可靠网络环境设计。作为物联网通信的核心协议之一&#xff0c;MQTT…...

python中的进程锁与线程锁

在Python中&#xff0c;线程和进程使用锁的机制有所不同&#xff0c;需分别通过threading和multiprocessing模块实现。以下是具体用法及注意事项&#xff1a; 一、线程锁&#xff08;Thread Lock&#xff09; 基本用法 线程锁用于多线程环境下保护共享资源&#xff0c;防止数据…...

导出导入Excel文件(详解-基于EasyExcel)

前言&#xff1a; 近期由于工作的需要&#xff0c;根据需求需要导出导入Excel模板。于是自学了一下下&#xff0c;在此记录并分享&#xff01;&#xff01; EasyExcel&#xff1a; 首先我要在这里非常感谢阿里的大佬们&#xff01;封装这么好用的Excel相关的API&#xff0c;真…...

仿正点原子驱动BMP280气压传感器实例

文章目录 前言 一、寄存器头文件定义 二、设备树文件中添加节点 三、驱动文件编写 四、编写驱动测试文件并编译测试 总结 前言 本文驱动开发仿照正点原子的iic驱动实现&#xff0c;同时附上bmp280的数据手册&#xff0c;可访问下面的链接&#xff1a; BMP280_Bosch(博世…...

Java 反射机制(Reflection)

一、理论说明 1. 反射的定义 Java 反射机制是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能够调用它的任意方法和属性&#xff1b;这种动态获取信息以及动态调用对象方法的功能称为 Jav…...

每日Prompt:发光线条解剖图

提示词 一幅数字插画&#xff0c;描绘了一个 [SUBJECT]&#xff0c;其结构由一组发光、干净且纯净的蓝色线条勾勒而成。画面设定在深色背景之上&#xff0c;以突出 [SUBJECT] 的形态与特征。某个特定部位&#xff0c;如 [PART]&#xff0c;通过红色光晕加以强调&#xff0c;以…...

从新手到高手:全面解析 AI 时代的「魔法咒语」——Prompt

引言&#xff1a;AI 时代的「语言炼金术」 在人工智能技术突飞猛进的今天&#xff0c;我们正在经历一场堪比工业革命的生产力变革。从聊天机器人到图像生成&#xff0c;从数据分析到自动化写作&#xff0c;AI 模型正在重塑人类与信息交互的方式。而在这一切背后&#xff0c;隐…...

【SpringBoot】集成kafka之生产者、消费者、幂等性处理和消息积压

目录 配置文件 application.properties启动类 ApplicationKafka 配置Message 消息实体类MessageRepository 消息处理消息积压监控服务Kafka消息消费者服务Kafka消息生产者服务API控制器提供测试接口关键特性说明生产环境建议 配置文件 application.properties # 应用配置 serv…...

[SAP] 通过事务码Tcode获取程序名

如何通过事务码查找对应的程序名&#xff1f; 方法一&#xff1a;直接运行事务码&#xff0c;跳转至功能详情页面&#xff0c;点击【系统】|【状态】即可获取对应事务码的程序名 从上面可以了解到自定义的事务码"ZMM01"对应的程序名为"ZYT36_ZMM001_01"&a…...

蓝桥杯12届国B 纯质数

题目描述 如果一个正整数只有 1 和它本身两个约数&#xff0c;则称为一个质数&#xff08;又称素数&#xff09;。 前几个质数是&#xff1a;2,3,5,7,11,13,17,19,23,29,31,37,⋅⋅⋅ 。 如果一个质数的所有十进制数位都是质数&#xff0c;我们称它为纯质数。例如&#xff1…...

国产大模型「五强争霸」,决战AGI!

来源 | 新智元 DeepSeek的横空出世&#xff0c;已经彻底改变了全球的AI局势。 从此&#xff0c;不仅中美大模型竞争格局改变&#xff0c;国产大模型的产业版图&#xff0c;也被一举打破&#xff01; 纵观中国基础大模型的市场&#xff0c;可以看到&#xff0c;如今的基础大模…...

C++修炼:继承

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《数据结构与算法之美》、《题海拾贝》、《C修炼之路》 欢迎点赞&#xff0c;关注&am…...

Mysql新增

插入一个记录需要的时间由下列因素组成&#xff0c;其中的数字表示大约比例&#xff1a; 连接&#xff1a;(3)发送查询给服务器&#xff1a;(2)分析查询&#xff1a;(2)插入记录&#xff1a;&#xff08;1x记录大小&#xff09;插入索引&#xff1a;&#xff08;1x索引&#x…...

华秋2025电子设计与制造技术研讨会(华东站)成功举办!

“探索科技前沿&#xff0c;共筑创新未来”——华秋“2025电子设计与制造技术研讨会第一站&#xff1a;华东站”在江苏苏州圆满落幕。 随着电子信息产业的持续增长和数字化经济的加速转型&#xff0c;数字化电子供应链的作用愈发显著。本届研讨聚焦EDA设计、DFM软件分析、多层…...

[学习] RTKLib详解:qzslex.c、rcvraw.c与solution.c

RTKLib详解&#xff1a;qzslex.c、rcvraw.c与solution.c 本文是 RTKLlib详解 系列文章的一篇&#xff0c;目前该系列文章还在持续总结写作中&#xff0c;以发表的如下&#xff0c;有兴趣的可以翻阅。 [学习] RTKlib详解&#xff1a;功能、工具与源码结构解析 [学习]RTKLib详解…...

【Ubuntu】neovim Lazyvim安装与卸载

安装neovim # 下载 AppImage wget https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.appimage# 添加执行权限 chmod ux nvim-linux-x86_64.appimage# 移动到系统路径&#xff0c;重命名为 nvim sudo mv nvim-linux-x86_64.appimage /usr/local/b…...

数据结构(一) 绪论

一. 时间复杂度: (1)定义: 时间复杂度是衡量算法执行时间随输入规模(通常用n表示)增长的变化趋势的指标,时间复杂度用O符号表示 用于描述算法在最坏情况下或平均情况下的时间需求 时间复杂度关注的是操作次数的增长率&#xff0c;而非具体执行时间 常见的时间复杂度由小到大依次…...

数据库事务并发问题

目录 脏读 幻读 不可重复读 三者的区别 脏读、幻读和不可重复读是在数据库并发操作中可能出现的问题&#xff0c;以下是对它们的详细介绍&#xff1a; 脏读 定义&#xff1a;指一个事务读取了另一个未提交事务修改的数据。示例&#xff1a;事务 A 修改了一条数据&#xf…...

Android之横向滑动列表

文章目录 前言一、效果图二、使用步骤1.xml布局2.代码3.HomeHxBean3.adapter4.item布局5.两个drawable 总结 前言 横向滑动列表有多种实现方式&#xff0c;也可以用tablayout&#xff0c;也可以用recyclerview&#xff0c;今天主要介绍recyclerview。 一、效果图 二、使用步骤…...

系统稳定性之上线三板斧

&#x1f4d5;我是廖志伟&#xff0c;一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》&#xff08;基础篇&#xff09;、&#xff08;进阶篇&#xff09;、&#xff08;架构篇&#xff09;清华大学出版社签约作家、Java领域优质创作者、CSDN博客专家、…...

aardio - godking.vlistEx.listbar + win.ui.tabs 实现多标签多页面切换

方法一&#xff1a; import win.ui; import godking.vlistEx.listbar; import fonts.fontAwesome; /*DSG{{*/ mainForm win.form(text"vlistEx - table adapter";right895;bottom503) mainForm.add({ custom{cls"custom";text"自定义控件";lef…...

鸿蒙 核心与非核心装饰器

HarmonyOS NEXT 版本中完整的 ArkTS 装饰器分类整理&#xff08;含核心与非核心装饰器&#xff0c;已剔除废弃特性&#xff09; 一、核心装饰器&#xff08;Essential Decorators&#xff09; 1. 组件基础 装饰器功能Entry应用入口组件&#xff0c;每个模块必须且仅有一个&am…...

TypeScript 知识框架

一、TypeScript 基础 1. 类型系统 基本类型: number, string, boolean, null, undefined, symbol, bigint 引用类型: object, array, function, class 特殊类型: any, unknown, void, never 类型推断与类型注解 类型断言 (as 语法和 <Type> 语法) 2. 接口与类型别名 接口…...

web-ui开源程序是建立在浏览器使用的基础上,旨在使 AI 代理可以访问网站

​一、软件介绍 文末提供程序和源码下载 web-ui开源程序是建立在浏览器使用的基础上&#xff0c;旨在使 AI 代理可以访问网站。WebUI&#xff1a;基于 Gradio 构建&#xff0c;支持大部分 browser-use 功能。此 UI 设计为用户友好型&#xff0c;并支持与浏览器代理轻松交互。扩…...

【ns3】TCP三次握手源码解析

文章目录 TCP三次握手过程三次握手源码 TCP三次握手过程 三次握手源码 下面是ns3里三次握手整体过程的源码&#xff0c;和上面图解一一对应&#xff1a; TCP socket的状态枚举&#xff1a; 整体过程&#xff1a; 客户端首先connect&#xff1a;tcp-socket-base::connect调用Do…...

【YOLO模型】参数全面解读

使用YOLO模型时&#xff0c;需要调节各种参数&#xff0c;网络文章和官方文档有点不方便&#xff0c;整理了下面的内容备用&#xff1a; 获取最全最新的参数列表: Ultralytics官方文档: 这是获取YOLOv11&#xff08;以及YOLOv8等&#xff09;最权威、最详细参数信息的地方。通…...

跨境电商定价革命:亚马逊“逆向提价“策略背后的价值重构逻辑

导言&#xff1a;打破价格魔咒的销量奇迹 2024年Q3亚马逊平台上演商业悖论&#xff1a;在TOP5000卖家中&#xff0c;12%实施5%-15%温和提价的商户&#xff0c;41%实现单量30.4%的季度增长。这一现象颠覆"低价即流量"的电商铁律&#xff0c;揭开新消费时代"价值定…...

Kafka、RabbitMQ、RocketMQ的区别

以下是 RabbitMQ、RocketMQ、Kafka 的核心区别对比&#xff1a; 一、架构设计差异 ‌Kafka‌ 基于分布式日志的发布-订阅模型&#xff0c;通过分区&#xff08;Partition&#xff09;实现水平扩展&#xff0c;依赖 ZooKeeper 管理集群消费者通过消费者组&#xff08;Consumer G…...

win10 局域网内聊天

在 Windows 10 的局域网 中&#xff0c;如果你想实现 多个用户之间的聊天功能&#xff0c;可以选择以下几种方案&#xff0c;取决于你需要的是&#xff1a; • ✅ 命令行纯文字聊天&#xff08;如 Linux talk&#xff09; • ✅ 图形界面聊天室 • ✅ 局域网广播消息 • ✅ 多人…...

【前端三剑客】Ajax技术实现前端开发

目录 一、原生AJAX 1.1AJAX 简介 1.2XML 简介 1.3AJAX 的特点 1.3.1AJAX 的优点 1.3.2AJAX 的缺点 1.4AJAX 的使用 1.4.1核心对象 1.4.2使用步骤 1.4.3解决IE 缓存问题 1.4.4AJAX 请求状态 二、jQuery 中的AJAX 2.1 get 请求 2.2 post 请求 三、跨域 3.1同源策略…...

论文学习_Trex: Learning Execution Semantics from Micro-Traces for Binary Similarity

摘要&#xff1a;检测语义相似的函数在漏洞发现、恶意软件分析及取证等安全领域至关重要&#xff0c;但该任务面临实现差异大、跨架构、多编译优化及混淆等挑战。现有方法多依赖语法特征&#xff0c;难以捕捉函数的执行语义。对此&#xff0c;TREX 提出了一种基于迁移学习的框架…...

数据压缩的概念和优缺点

一、数据压缩的概念 数据压缩是通过特定算法&#xff08;压缩算法&#xff09;对数据进行重新编码&#xff0c;以减少数据存储空间或传输带宽的技术。其核心目标是在不丢失关键信息&#xff08;或允许一定程度信息损失&#xff09;的前提下&#xff0c;降低数据量&#xff0c;…...

spaCy基础入门

spaCy 概览说明 spaCy 是一个现代、快速、工业级 NLP 工具库&#xff0c;专门为实际工程应用设计&#xff0c;提供&#xff1a; • 分词&#xff08;Tokenization&#xff09; • 词性标注&#xff08;POS Tagging&#xff09; • 命名实体识别&#xff08;NER&#xff09; •…...

vue3项目创建-配置-elementPlus导入-路由自动导入

目录 方法一&#xff1a;create-vue 方法二 &#xff1a;Vite Vue Vite.config.ts配置 引入element-plus 安装 如何在项目中使用 Element Plus 完整引入 按需导入 vue3vite中自动配置路由的神器&#xff1a;vite-plugin-pages 1. 安装 2、修改vite.config.js中配置…...

2025年的电脑能装win7吗_2025年组装电脑装win7详细图文教程

2025年的电脑能装win7吗&#xff1f;2025年的电脑可以安装Win7&#xff0c;但存在一些限制和挑战。2025年的电脑基本上是14代和15代处理器&#xff0c;需要特定的条件和步骤才能安装win7&#xff0c;并且只能采用独立显卡&#xff0c;因为没有集成显卡驱动。另外注意目前2025年…...