[终端安全]-8 隐私保护和隐私计算技术

1 隐私保护相关法规和标准

1)国内法规和标准

1.1)中华人民共和国网络安全法(2017年)

   - 规定了个人信息的保护和数据安全的基本原则。

   - 要求网络运营者采取措施防止数据泄露、篡改和丢失。

1.2)信息安全技术:个人信息安全规范(GB/T 35273-2020)

   - 国家标准,规定了个人信息保护的具体要求和实施指南。

1.3)数据安全法(2021年)

   - 涉及数据处理、数据安全管理、数据安全保护等方面的要求。

1.4)中华人民共和国个人信息保护法(2021年)

   - 明确了个人信息处理的基本原则和要求。

   - 规定了个人信息处理者的责任和义务。

   - 保护个人在个人信息处理过程中的知情权、访问权、纠正权等。

2)国际法规和标准

2.1)欧洲通用数据保护条例(GDPR)(2018年发布,被称为欧盟史上最严条例)

   - 全球影响力最大的隐私保护法规之一。

   - 规定了数据保护的基本原则,如合法性、公平性、透明性等。

   - 强调数据主体的权利,包括访问权、纠正权、删除权、数据可携权等。

   - 设有高额罚款和严格的合规要求。

2.2)美国:加州消费者隐私法案(CCPA,2018年)

   - 强调消费者对其个人信息的控制权,包括访问权、删除权和拒绝出售权。

2.3)其它:

   - 日本:个人信息保护法(APPI)规定了关于处理个人信息的基本要求和隐私权保护框架。

   - 加拿大:个人信息保护与电子文档法(PIPEDA)适用于商业组织收集、使用和披露个人信息。

   - 澳大利亚:隐私法(Privacy Act)含13项隐私原则(APPs)用于管理个人信息的处理。

   - ISO/IEC 27001:国际标准,提供了信息安全管理体系(ISMS)的要求和指导。

2 隐私保护技术

1)数据加密

- 对称加密(如AES):同一个密钥用于加密和解密。

- 非对称加密(如RSA):公钥加密,私钥解密。

2)匿名化和伪匿名化

- 数据匿名化:移除个人身份信息,使数据无法被识别。

- 伪匿名化:用假名或其他方式替换个人身份信息,降低被识别风险。

3)访问控制

- 基于角色的访问控制(RBAC):根据用户角色分配访问权限。

-基于属性的访问控制(ABAC):根据用户属性和环境条件分配访问权限。

4)隐私计算

- 在保护数据隐私的前提下,对数据进行计算和处理。

- 包括差分隐私、同态加密、联邦学习、多方安全计算等技术。

3 隐私计算技术

1)差分隐私计算

差分隐私(Differential Privacy,DP)是一种技术,旨在通过添加噪声保护个体隐私,从而确保数据库中单个记录的存在与否不会显著影响查询的结果,这使得攻击者难以从查询结果中推断出关于个体的信息。

一个算法A被称为ϵ-差分隐私的,如果对于任意两个只差一个记录的数据库D和D',以及任意一个输出集合 S ⊆Range(A),都有:Pr[A(D)∈S] ≤ eϵPr[A(D′)∈S],其中:ϵ是隐私预算参数,值越小隐私保护越强,D和D'是任意两个只差一个记录的数据库。

1.1)实现机制

差分隐私主要通过添加噪声来实现,这些噪声通常是从特定的分布中抽取的。

A)拉普拉斯机制

拉普拉斯机制是最常见的差分隐私机制之一,通过向查询结果添加拉普拉斯噪声来实现。

数学公式:给定函数f和参数ϵ,定义拉普拉斯机制为:A(D)=f(D)+Lap(Δf/ϵ),其中:Lap(b)是参数为b的拉普拉斯分布,Δf是函数f的全局敏感度,定义为:Δf=maxD,D'∣∣f(D)−f(D')∣∣1​。

B)高斯机制

高斯机制通过添加高斯噪声来实现差分隐私,通常用于满足(ϵ,δ)差分隐私,其中δ是隐私损失的概率。

数学公式:给定函数 f,高斯机制定义为:A(D)=f(D)+N(0,σ2),其中:N(0,σ2)是均值为 0,方差为σ2的高斯分布,σ决于隐私预算参数ϵ和 δ,以及函数f 的敏感度。

C)指数机制

指数机制用于选择最优输出,使其满足差分隐私,适用于离散数据。

数学公式:对于输出集合O,每个输出o∈O的选择概率为:Pr[A(D)=o]∝exp(ϵu(D,o)/ 2Δu),其中:u(D,o)是效用函数表示输出o 对数据库D 的效用,Δu是效用函数的敏感度。

1.2)典型应用

- 统计查询:在数据集中进行聚合查询如计算平均值、总和等,通过添加噪声保护个体隐私。

- 机器学习:训练差分隐私模型,保护训练数据集的隐私。

- 发布数据:发布差分隐私的合成数据,保护原始数据隐私。

- 数据共享:在多个机构之间共享数据,确保数据隐私。

A)谷歌的RAPPOR:随机可聚合隐私保护序列响应用于收集用户行为数据,通过随机化响应和差分隐私技术确保单个用户的行为数据不泄露。Google Chrome使用RAPPOR来收集用户的浏览器设置、使用情况等信息,确保个人数据不会被泄露。

B)苹果的差分隐私:苹果在键盘输入、Emoji使用、Safari浏览器等方面使用差分隐私技术,收集用户数据来提升预测和推荐功能,同时保护用户隐私。

C)微软的Differential Privacy Library:提供差分隐私的工具和库,帮助开发者在应用中集成差分隐私技术。例如微软在Windows系统的遥测数据收集中使用差分隐私技术,确保用户使用数据的隐私安全。

2)同态加密

同态标识一种加密运算特征,即明文和密文之间存在确定的同步变换规则;同态加密(Homomorphic Encryption,HE)是一种允许对加密数据进行特定计算操作的加密技术,而这些操作的结果在解密后保持有效。

2.1)基本概念

同态加密的关键特性是它允许在密文上执行某些操作,而结果仍然保持加密状态。主要有两种同态操作:加法同态(密文的加法操作对应于明文的加法)和乘法同态(密文的乘法操作对应于明文的乘法)。

- 半同态加密(PHE):仅支持加法或乘法中的一种操作。

- 全同态加密(FHE):支持任意多次的加法和乘法操作。

2.2)半同态-RSA

RSA 加密不具备加法同态,但可以用乘法实现某种意义上的同态操作,其安全性基于大数因式分解的困难问题。

c=E(m)=me mod n,E(m1​)⋅E(m2​)=( m1e mod n) (m2e mod n) = (m1 m2) e mod n = E(m1 m2)。

2.3)半同态-Paillier 加密

Pailier支持加法同态,是目前使用较多的部分同态加密算法,其安全性基于判定合数剩余类问题。

- 密钥生成:n = pq,g∈Zn2*,生成公钥 (n, g) 和私钥λ。

- 加密:E(m)=gm⋅rn mod n2,其中m是明文,r是随机数。

- 同态加法:E(m1)⋅E(m2)=(gm1⋅r1n)⋅(gm2⋅r2n) mod n2=g(m1+m2)⋅(r1r2)n mod n2=E(m1+m2)。

2.4)全同态- Gentry加密

Craig Gentry提出的第一个全同态加密方案,基于理想格(Ideal Lattices)的数学结构。首先构造一个有限同态加密方案,满足低阶密文多项式在计算时同态性,然后用压缩方法解密降低解密过程中多项式系数;加密过程会引入噪声,并会随着运算增大,超出阈值会导致解密失败。Gentry采用自举技术,将接近阈值的噪声密文及密钥分别加密,之后解密算法作为评估函数一部分使其噪声比原始密文噪声小。

- 密钥生成:生成公钥 pk 和私钥 sk,以及一个特殊的“噪声”参数 f)。

- 加密:E(m) = E_{pk}(m + f),其中m 是明文。

- 同态加法:E(m1) + E(m2) = E(m1 + m2)

- 同态乘法:E(m1)⋅E(m2)=E(m1⋅m2)

备注:结合自举技术或重线性化技术对噪声的减小,层次性同态加密可转换为全同态加密。BFV是目前最有影响力方案之一,其安全性依赖于RLWE困难问题;GSW来源矩阵的近似特征向量,其安全性最终依赖于LWE困难问题。

2.5)硬件实现

实现基本的加密和解密操作,通常需要高效的模运算单元(模加、模乘、模幂运算等)和随机数生成器;支持在密文上进行同态加法和乘法运算,并保持密文中的噪声在可控范围内,需设计专门的运算单元来处理这些操作。FHE算法涉及大数的加法、乘法和幂运算,这些运算的复杂度随密钥长度指数增长;每次同态运算都会引入噪声,累积的噪声会增加解密的复杂度;还需要进行多次迭代运算,每次迭代都会增加计算复杂度,因此FHE算法复杂度较高,需要复杂的硬件设计并消耗较高的计算资源。

2.6)典型应用

- 在云端对加密数据进行处理,如搜索、统计分析等,保证数据传输和存储过程中的隐私性。

- 对加密的患者数据进行分析,保护隐私的同时允许数据共享和协作。

3)多方安全计算

多方计算(MPC,Multi-Party Computation)是一种密码学技术,允许多个参与方在不泄露各自输入的情况下共同计算一个函数的输出,核心思想是确保每个参与方只了解自己的输入和最终计算结果,而不暴露其他参与方的输入。

3.1)核心协议

A)混淆电路

Yao的加密电路协议将计算表示为布尔电路,然后对电路中的每个门进行加密,加密后的电路只能通过特定的密钥进行计算。

- 生成布尔电路表示计算。

- 对电路中的每个门进行加密。

- 参与方交换加密电路和密钥。

- 计算加密电路,得到最终结果。

B)秘密共享

将每个输入数据分割成若干份(称为份额),分发给所有参与方。每个参与方只有其中一部分数据,无法单独恢复原始数据。典型方案Shamir秘密共享,将秘密 S分割成 n份。

- 发份额给 n个参与方。

- 参与方根据秘密共享协议执行计算,得到加密结果。

- 汇总计算结果,恢复最终结果。

BGW协议:Ben-Or, Goldwasser, and Wigderson提出的一种秘密共享基础上的MPC协议,支持任意数量的加法和乘法操作。

假设有两个参与方A和B,他们分别持有输入x和y,MPC的目标是计算函数 f(x,y) 而不泄露x和y。

- 秘密共享:将 x和y分成若干份,分发给参与方。x→{x1,x2,…,xn},y→{y1,y2,…,yn},其中,x1+x2+…+xn=x和 y1+y2+…+yn=y。

- 加法和乘法:参与方按照协议执行加法和乘法操作,得到加法和乘法的秘密共享结果。

- 结果恢复:将计算结果的份额汇总,恢复最终计算结果。

f(x,y)→{f1,f2,…,fn},其中,f1+f2+…+fn=f(x,y)。

3.2)典型应用

电子投票:MPC可以确保投票过程中每个选民的选择保密,同时能够正确计算投票结果。

隐私保护统计分析:多个机构可以在不泄露各自数据的情况下,共同进行统计分析,如联合医疗数据分析。

安全多方机器学习:在不泄露训练数据的情况下,多个机构可以共同训练机器学习模型。

4)联邦学习

联邦学习(FL)是一种分布式机器学习方法,允许多个参与方在不共享本地数据的情况下共同训练一个全局模型,从而在保护数据隐私的同时实现协作学习。联邦学习的基本思想是通过在本地设备上训练模型,然后将本地模型的更新发送到中央服务器进行汇总和优化,最后将更新后的全局模型分发回本地设备进行下一轮训练。

- 本地训练:各参与方(如智能手机、物联网设备等)在本地数据上独立训练模型,训练过程中,数据不离开本地设备,确保数据隐私。

- 模型聚合:各参与方将本地训练得到的模型参数或梯度发送到中央服务器,服务器汇总这些参数或梯度,更新全局模型。

- 全局模型更新:中央服务器将更新后的全局模型分发给各参与方,各参与方基于新的全局模型继续进行本地训练,进入下一轮迭代。

4.1)工作流程

- 初始化全局模型:服务器初始化一个全局模型,并将其分发给所有参与方。

- 本地训练:各参与方在本地数据上使用全局模型进行训练,并计算模型更新(如权重、梯度等)。

- 上传本地更新:各参与方将本地更新发送到中央服务器。

- 模型聚合:服务器汇总所有参与方的更新,计算全局模型更新。常见的聚合方法是加权平均:wt+1=∑i=1N(ni/n)wti,其中wt是第 t轮的全局模型参数,wti是第 i个参与方在第 t轮的本地模型参数,ni是第i个参与方的数据量,n是所有参与方的数据总量。

- 分发更新后的全局模型:服务器将更新后的全局模型分发给各参与方。

- 迭代训练:各参与方基于更新后的全局模型进行下一轮本地训练,重复上述过程直到模型收敛或达到预定的训练轮数。

4.2)关键技术

安全多方计算:用于在模型聚合过程中保护参与方的模型更新隐私,通过加密技术确保参与方的更新在汇总过程中不被泄露。

差分隐私:在本地更新过程中添加噪声,以保护参与方的隐私,确保单个参与方的更新对全局模型的影响有限。

同态加密:允许在加密数据上进行计算保护模型更新隐私,在模型聚合过程中通过同态加密确保更新过程中的隐私安全。

通信效率优化:采用梯度压缩、模型剪枝、知识蒸馏等技术,降低通信成本。

4.3)联邦分类

- 横向联邦学习也称为样本并行联邦学习,主要适用于参与方的数据集在特征空间相似但样本空间不同的情况。例如不同医院拥有不同的病人数据集,但每个病人数据集都包含相同的医疗特征(如血压、血糖等)。

- 纵向联邦学习也称为特征并行联邦学习,适用于参与方的数据集在样本空间相似但特征空间不同的情况。例如不同金融机构拥有相同客户的不同信息,一个机构有客户的交易记录,另一个机构有客户的信用记录。

- 迁移学习旨在将已在源任务上训练好的模型知识迁移到目标任务中,减少目标任务的数据需求和训练时间。例如从图像识别领域训练的模型中迁移知识到医疗图像分析领域。

4.4)典型应用

- 在智能手机、智能手表、物联网设备上实现分布式协作学习,提升个性化模型的性能。例如Gboard 输入法使用联邦学习提高输入预测准确性。

- 各医疗机构在不共享病人数据的前提下,共同训练医学模型。例如医院之间共享癌症诊断模型,提高诊断准确率。

- 银行和金融机构在保护客户隐私的前提下,共同训练欺诈检测模型。例如联合信用评分模型,提升风险管理能力。

- 各城市部门在不共享敏感数据的情况下,共同训练交通、能源管理等模型。例如城市交通流量预测模型,提升交通管理效率。

5)零知识证明

零知识证明(ZKP)是一种密码学协议,允许一方(证明者)向另一方(验证者)证明某个陈述的真实性,而无需透露任何关于该陈述的额外信息。

- 完备性:如果陈述是真,诚实的证明者可以使得验证者相信这一事实。

- 可靠性:如果陈述是假的,任何试图欺骗的证明者都无法使验证者相信这一事实,除非极小概率事件发生。

- 零知识性:如果陈述是真,证明过程不会泄露任何关于该陈述的额外信息。

5.1)交互式零知识证明

证明者和验证者通过多次交互完成证明过程,一般需要在双方之间采取挑战、应答方式,经典例子基于图同构的零知识证明。

Schnorr协议

Schnorr身份认证协议由德国密码学家Claus Schnorr于1990年提出,其安全性依赖离散对数求解困难问题,并且该协议基于乘法群运算,可提前计算参数减少证明者计算资源。

设置:公开参数 (g, p, q),私钥 x,公钥 y=gx mod  p。

承诺:证明者选择随机数 r,计算 t=gr mod  p并发送给验证者。

挑战:验证者选择随机数 c并发送给证明者。

响应:证明者计算 s = r + cx  mod q并发送给验证者。

验证:验证者检查 gs=?t⋅yc mod  p。

5.2)非交互式零知识证明

证明过程不需要交互,通常需要可信的公共参数,常用于区块链和智能合约。

zk-SNARK

设置:生成可信公共参数 (pk,vk)。

证明生成:证明者使用 pk生成证明 π,π=Prove(pk,statement,witness)。

验证:验证者使用 vk验证 π,Verify(vk,statement,π)。

5.3)典型应用

- 区块链:用于隐私保护和验证交易的有效性,如Zcash中的zk-SNARK。

- 身份验证:用于证明用户身份的有效性而不泄露身份信息。

- 安全计算:用于多方计算中的数据隐私保护。

6)可信执行环境

可信执行环境(TEE)是一种基于硬件的安全技术,提供一个隔离的计算环境,确保敏感数据和代码在隔离环境中安全执行。

6.1)核心组件

安全处理器:专用处理器负责处理敏感数据和执行敏感代码。

内存隔离:隔离内存区域,用于存储敏感数据和代码,防止未经授权的访问。

安全启动:确保在启动时加载的代码是可信的,并防止恶意代码的注入。

加密和解密模块:提供硬件加速的加密和解密功能,保护数据的机密性和完整性。

6.2)典型实现

ARM TrustZone:ARM架构中的安全扩展,通过硬件隔离创建安全和非安全世界,分别运行可信和非可信代码。请参照笔者之前文章:[终端安全]-3 移动终端之硬件安全(TEE)

Intel SGX:英特尔的安全扩展,通过创建隔离的安全区域(enclaves),保护敏感数据和代码的执行。

A)核心技术

- 安全启动:确保在启动时加载的代码是可信的。

- 内存加密:对enclave内存进行加密,防止未经授权的访问。

- 远程认证:允许远程验证enclave的完整性和可信性。

B)架构

- Enclave:隔离的安全区域,用于执行敏感代码和存储敏感数据。

- CPU支持:需要支持SGX指令集的CPU。

- 内存隔离:通过内存加密技术保护enclave内存。

AMD SEV (Secure Encrypted Virtualization)是一种硬件安全技术,通过加密虚拟机的内存,保护虚拟机中的数据和代码。

A)核心技术

- 内存加密:对虚拟机的内存进行加密,防止宿主机或其他虚拟机的访问。

- 密钥管理:使用硬件安全模块管理加密密钥。

- 远程认证:允许远程验证虚拟机的完整性和可信性。

B)架构

- 虚拟机管理程序(VMM):支持SEV技术的虚拟机管理程序。

- CPU支持:需要支持SEV指令集的CPU。

- 内存加密:通过内存加密技术保护虚拟机内存。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/46467.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python】Gunicorn vs Uvicorn:如何选择适合你的 Python WSGI/ASGI 服务器

我白天是个 搞笑废物 表演不在乎 夜晚变成 忧伤怪物 撕扯着孤独 我曾经是个 感性动物 小心地感触 现在变成 无关人物 🎵 张碧晨/王赫野《何物》 在部署 Python Web 应用时,选择合适的服务器对应用的性能和稳定性至关重要。Gunicorn…

护眼台灯真的护眼吗?要注意学生如何正确使用台灯!

孩子们面临着越来越多的视力挑战,在近视学生中,近10%为高度近视,且占比随年级升高而增长。幼儿园6岁儿童中有1.5%为高度近视,而高中阶段则达到了17.6%。青少年是国家的未来和希望,而他们的视力健康却面临着前所未有的挑…

一篇讲清楚怎么选算力租赁平台

选择算力租赁平台时,需要考虑多个因素以确保找到最适合自己需求的服务。以下是一些关键点,可以帮助您做出明智的选择: 明确需求:首先,确定您的项目需要哪种类型的计算资源,比如CPU、GPU或FPGA,以…

Cadence23学习笔记(二)

原理图设计界面中就可以直接新建PCB: 亲测:需要画完原理图,并且DRC通过之后才可以! 放置完元器件之后要规定元件的Footprint ,注意PCB封装名要和库文件中的名字对应: DRC按钮: 点击图标 N, 生成第一网表&…

车载音视频MediaPlayer优化方案

媒体播放现状 从手机到车载,在很多地方还是有很大的不同。针对多媒体的场景Android车机目前大部分结构大致结构如下图: 从以上图看出的问题: 各个音视频APP单独实现播控界面,播放链路不一致,使用的底层播放器和音频焦…

基于Spring Boot的高校后勤餐饮管理系统

1 项目介绍 1.1 研究背景 “互联网”时代的到来,既给高校后勤管理发展带来了机遇,也带来了更大的挑战。信息化应用已经开始普及,传统的高校后勤餐饮管理模式往往存在着效率低下、信息不透明、资源浪费等问题,已经难以满足现代高…

Linux系统之部署经典魔塔小游戏

Linux系统之部署经典魔塔小游戏 一、魔塔小游戏介绍1.1 魔塔小游戏简介1.2 项目预览二、本次实践介绍2.1 本地环境规划2.2 本次实践介绍三、检查本地环境3.1 检查系统版本3.2 检查系统内核版本3.3 检查软件源四、安装Apache24.1 安装Apache2软件4.2 启动apache2服务4.3 查看apa…

如何使用断点续传方式上传大文件到阿里云 OSS

要使用断点续传方式上传大文件到阿里云 OSS,一般可以通过阿里云提供的 SDK 来实现。以下是使用 Java SDK 进行断点续传上传的示例代码,前提条件如下: 已创建存储空间(bucket)。具有oss:putObject权限。SDK 会将上传的状…

flask基础配置详情

前言 一个简单的应用 app Flask(__name__) app.route("/") def hello_world():return "<p>Hello,World!"运行Flask应用 #flask命令运行flask --app hello run#使用Python命令进行运行python -m flask # 作为一个捷径&#xff0c;如果文件名为 app…

STM32第十八课:SPIFlash

目录 需求一、SPI概要二、SPI配置1.开时钟2.配置IO3.配置&使能SPI 三、FLash操作函数1.SPI发送数据2.FLASH写使能3.FLASH等待操作完成4.FLASH页写操作5.FLASH读操作6.FLASH扇区擦除 四、需求实现 需求 通过SPI控制FLash进行数据的保存和删除。 一、SPI概要 在我们使用UA…

【python】OpenCV—European Article Number

参考学习来自&#xff1a;OpenCV基础&#xff08;25&#xff09;条码和二维码扫的生成与识别 1 条形码介绍 EAN-13是欧洲物品编码&#xff08;European Article Number&#xff09;的缩写&#xff0c;是一种广泛使用的条形码标准&#xff0c;特别是在超级市场和其它零售业中。…

【c++刷题笔记-动态规划】day38: 322. 零钱兑换 、 279.完全平方数 、139.单词拆分

322. 零钱兑换 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;完全背包&#xff0c;初始化为最大背包容量&#xff0c;当背包为0的时候有0枚硬币 重点&#xff1a;dp[i-coins[j]]1,统计个数 class Solution { public:int coinChange(vector<int>& coin…

OpenCV解决验证码(数字和字母)识别(Python)

文章目录 前言一、准备验证码图片 前言 OpenCV是一个基于Apache2.0许可&#xff08;开源&#xff09;发行的跨平台计算机视觉和机器学习软件库。它支持Windows、Linux、Mac OS、Android和iOS等多个操作系统&#xff0c;提供了丰富的图像处理和计算机视觉功能&#xff0c;包括但…

WINUI——实现点在直线上随意移动

开发环境 VS2022 .net core6 需求 需要在一条直线上可随意移动一个点&#xff0c;这个点一定要在这条直线上&#xff0c;不可移出直线。也就是说A点到B点的直线就是这个点的移动范围。 需求深入分析 这个需求看上去&#xff0c;感觉完全可以使用Slider实现&#xff0c;因为…

RPC与服务的注册发现

文章目录 1. 什么是远程过程调用(RPC)?2. RPC的流程3. RPC实践4. RPC与REST的区别4.1 RPC与REST的相似之处4.2 RPC与REST的架构原则4.3 RPC与REST的主要区别 5. RPC与服务发现5.1 以zookeeper为服务注册中心5.2 以etcd为服务注册中心 6. 小结参考 1. 什么是远程过程调用(RPC)?…

(自用)网络编程

OSI七层协议模型 (open system interconnection) 应用层————为应用数据提供服务 表示层————数据格式转化&#xff0c;数据加密 会话层————建立、维护和管理会话 传输层————建立、维护和管理端到端的链接&#xff0c;控制数据传输的方式 网络层————数据…

昇思25天学习打卡营第19天|基于MobileNetv2的垃圾分类

国内城市生活垃圾一般分类为以下四大类&#xff1a; 可回收垃圾&#xff1a;主要包括废纸、塑料、玻璃、金属和布料五大类。废纸如报纸、期刊、图书、包装纸等&#xff1b;塑料如各种塑料袋、塑料包装物、一次性塑料餐盒等&#xff1b;玻璃如玻璃瓶、碎玻璃片等&#xff1b;金…

Windows图形界面(GUI)-DLG-C/C++ - 图形界面程序结构

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​​​​链接点击跳转博客主页 目录 Windows图形界面程序结构 Windows 程序结构 窗口类和窗口过程函数 创建和显示窗口 消息循环和消息处理机制 Windows图形界面程序结构 Windows 程序结构 WinMain 函数WinMain …

【2024最新】C++读写优化超详细解析(cin优化+普通快读+fread)_输入输出优化_快读快写_算法竞赛

在算法竞赛中&#xff0c;读入速度和输出速度一直是卡常的重要手段。也有不少人经历过被题目卡 cin 的情况。今天我给大家介绍一下算法竞赛中常用的读写方法及其优化。 声明&#xff1a;大部分情况下&#xff0c;只用读入优化就行。对于输出量大的题目再考虑使用输出优化。 一…

Base64实现传输图片

1. Base64简介 Base64是一种基于64个可打印字符来表示二进制数据的表示方法。通常用于在URL、Cookie和邮件等场景中&#xff0c;将二进制数据转换为字符串形式进行传输。 代码实现 public class ImageUtils {/*** 得到图片的Base64编码* param imagePath 图片路径* return …