<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>主页 on METEOR</title><link>https://meteor0313.github.io/</link><description>Recent content in 主页 on METEOR</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Mon, 17 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://meteor0313.github.io/index.xml" rel="self" type="application/rss+xml"/><item><title>CP-ABE：密文策略属性基加密（Bethencourt-Sahai-Waters 2007）</title><link>https://meteor0313.github.io/p/cp-abe%E5%AF%86%E6%96%87%E7%AD%96%E7%95%A5%E5%B1%9E%E6%80%A7%E5%9F%BA%E5%8A%A0%E5%AF%86bethencourt-sahai-waters-2007/</link><pubDate>Mon, 17 Aug 2026 00:00:00 +0000</pubDate><guid>https://meteor0313.github.io/p/cp-abe%E5%AF%86%E6%96%87%E7%AD%96%E7%95%A5%E5%B1%9E%E6%80%A7%E5%9F%BA%E5%8A%A0%E5%AF%86bethencourt-sahai-waters-2007/</guid><description>&lt;h2 id="什么是属性基加密abe"&gt;什么是属性基加密（ABE）？
&lt;/h2&gt;&lt;p&gt;属性基加密（Attribute-Based Encryption, ABE）是一种&lt;strong&gt;基于属性的公钥加密&lt;/strong&gt;方案。与传统公钥加密（PKI）不同，ABE 不再用「某个用户身份」来标识公钥和私钥，而是用&lt;strong&gt;一组属性（Attributes）&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;核心思想&lt;/strong&gt;：加密时指定一个「谁能解密」的策略，解密时用户的私钥包含其拥有的属性。当用户属性满足策略时，即可解密。&lt;/p&gt;
&lt;p&gt;ABE 有两种基本范式：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;范式&lt;/th&gt;
					&lt;th&gt;策略在哪&lt;/th&gt;
					&lt;th&gt;含义&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;KP-ABE&lt;/strong&gt;（密钥策略）&lt;/td&gt;
					&lt;td&gt;私钥中&lt;/td&gt;
					&lt;td&gt;用户私钥绑定策略，密文携带属性&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;CP-ABE&lt;/strong&gt;（密文策略）&lt;/td&gt;
					&lt;td&gt;密文中&lt;/td&gt;
					&lt;td&gt;密文绑定策略，用户私钥携带属性&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="论文背景"&gt;论文背景
&lt;/h2&gt;&lt;p&gt;ABE 的概念最早由 &lt;strong&gt;Sahai 和 Waters（2005）&lt;/strong&gt; 提出，但他们的方案是 &lt;strong&gt;KP-ABE&lt;/strong&gt; 范式：用户的私钥中包含访问策略，而密文只携带一组属性。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;KP-ABE 的问题&lt;/strong&gt;：数据所有者（加密者）无法控制「谁能访问」。策略是预先嵌入在用户密钥里的，这意味着你必须知道所有合法用户的属性集合才能生成密钥——这对实际场景非常不友好。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bethencourt、Sahai、Waters（2007）&lt;/strong&gt; 在论文 &lt;em&gt;&amp;ldquo;Ciphertext-Policy Attribute-Based Encryption&amp;rdquo;&lt;/em&gt; 中提出了 &lt;strong&gt;CP-ABE&lt;/strong&gt;，将策略与属性的角色&lt;strong&gt;完全反转&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;密文&lt;/strong&gt;携带访问策略（Access Policy）&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;用户私钥&lt;/strong&gt;携带属性集合&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样，&lt;strong&gt;数据所有者&lt;/strong&gt;在加密时就能精确控制「只有满足这个策略的用户才能解密」，而用户只需持有自己的属性密钥即可。&lt;/p&gt;
&lt;h2 id="cp-abe-的核心创新"&gt;CP-ABE 的核心创新
&lt;/h2&gt;&lt;h3 id="1-角色反转"&gt;1. 角色反转
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;KP-ABE（2005）：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 密文 &amp;lt;- 属性集合 {医生, 内科}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 私钥 &amp;lt;- 访问策略「医生 AND 内科」
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;CP-ABE（2007）：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 密文 &amp;lt;- 访问策略「医生 AND 内科」
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 私钥 &amp;lt;- 属性集合 {医生, 内科}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="2-基于-lsss-的访问结构"&gt;2. 基于 LSSS 的访问结构
&lt;/h3&gt;&lt;p&gt;论文使用 &lt;strong&gt;线性秘密共享方案（LSSS, Linear Secret Sharing Scheme）&lt;/strong&gt; 来表达任意单调访问结构。&lt;/p&gt;
&lt;p&gt;LSSS 的核心：用一个矩阵 &lt;strong&gt;M&lt;/strong&gt; 和一个向量 &lt;strong&gt;v&lt;/strong&gt; 来表示访问策略：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;矩阵的每一行对应一个属性&lt;/li&gt;
&lt;li&gt;向量 &lt;strong&gt;v&lt;/strong&gt; 是秘密的编码，满足 M * λ = (s, 0, 0, &amp;hellip;, 0)&lt;/li&gt;
&lt;li&gt;一个属性集合满足策略，当且仅当存在一组系数使对应行线性组合出 &lt;strong&gt;v&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;：策略「(A AND B) OR (C AND D)」对应的 LSSS 矩阵：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;行&lt;/th&gt;
					&lt;th&gt;属性&lt;/th&gt;
					&lt;th&gt;向量&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;A&lt;/td&gt;
					&lt;td&gt;(1, 0)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2&lt;/td&gt;
					&lt;td&gt;B&lt;/td&gt;
					&lt;td&gt;(1, 0)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;3&lt;/td&gt;
					&lt;td&gt;C&lt;/td&gt;
					&lt;td&gt;(0, 1)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;4&lt;/td&gt;
					&lt;td&gt;D&lt;/td&gt;
					&lt;td&gt;(0, 1)&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="3-双线性配对上的构造"&gt;3. 双线性配对上的构造
&lt;/h3&gt;&lt;p&gt;方案基于 &lt;strong&gt;双线性配对（Bilinear Pairing）&lt;/strong&gt; 和 &lt;strong&gt;DBDH（Decisional Bilinear Diffie-Hellman）&lt;/strong&gt; 假设：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;加密阶段：将明文与访问策略结合，生成携带策略的密文&lt;/li&gt;
&lt;li&gt;密钥生成：根据用户属性集合生成私钥&lt;/li&gt;
&lt;li&gt;解密阶段：利用双线性配对验证属性是否满足策略，并恢复明文&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="方案组成"&gt;方案组成
&lt;/h2&gt;&lt;h3 id="setup系统初始化"&gt;Setup（系统初始化）
&lt;/h3&gt;&lt;p&gt;生成系统公共参数 &lt;strong&gt;PK&lt;/strong&gt; 和主密钥 &lt;strong&gt;MK&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;PK = (g, e(g,g)^α, {H(i)=g^a_i | i ∈ U})
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;MK = (α, a_1, ..., a_|U|)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="keygen密钥生成"&gt;KeyGen（密钥生成）
&lt;/h3&gt;&lt;p&gt;对用户属性集 S，生成私钥：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;D_S = {D = g^r * H(σ_j)^r | j ∈ S}, D_tilde = g^r
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="encrypt加密"&gt;Encrypt（加密）
&lt;/h3&gt;&lt;p&gt;给定明文 M 和访问策略 A，生成密文：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;CT = (A, C = M * e(g,g)^(α*s), C_tilde = g^s, {C_j = g^(a_j*λ_j)})
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;其中 λ_j 是 LSSS 矩阵对应的秘密共享值。&lt;/p&gt;
&lt;h3 id="decrypt解密"&gt;Decrypt（解密）
&lt;/h3&gt;&lt;p&gt;用户用私钥 D_S 解密：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;检查属性集 S 是否满足策略 A&lt;/li&gt;
&lt;li&gt;若满足，找到对应行和系数 {w_j}&lt;/li&gt;
&lt;li&gt;通过配对运算恢复共享值&lt;/li&gt;
&lt;li&gt;从共享值中恢复明文 M&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="安全性"&gt;安全性
&lt;/h2&gt;&lt;p&gt;论文在 &lt;strong&gt;标准模型&lt;/strong&gt; 下证明了选择性安全（Selective Security），基于 &lt;strong&gt;DBDH 假设&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;安全性证明使用 &lt;strong&gt;归约（Reduction）&lt;/strong&gt; 技术：假设存在一个能攻破 CP-ABE 的攻击者 A，则可以构造一个解决 DBDH 问题的算法 B，从而矛盾。&lt;/p&gt;
&lt;h2 id="应用价值"&gt;应用价值
&lt;/h2&gt;&lt;p&gt;CP-ABE 在以下场景有重要应用：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;场景&lt;/th&gt;
					&lt;th&gt;说明&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;云存储访问控制&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;数据上传时指定策略，云服务商无法绕过策略解密&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;电子健康记录&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;按角色和权限属性精细控制病历访问&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;物联网数据分发&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;按设备属性加密，满足条件的设备自动解密&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;数字版权管理&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;按用户订阅属性控制内容访问&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="局限与后续发展"&gt;局限与后续发展
&lt;/h2&gt;&lt;p&gt;论文中的原始方案存在以下限制：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;选择性安全&lt;/strong&gt;：攻击者必须先声明挑战属性集，实际中可能不够强&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;密文膨胀&lt;/strong&gt;：密文大小与策略复杂度成正比&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;密钥托管问题&lt;/strong&gt;：主密钥持有者可生成任意属性密钥&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不支持非单调策略&lt;/strong&gt;：只能表达单调访问结构（AND/OR），无法表达 NOT&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;后续改进方向&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;双系统加密&lt;/strong&gt;：达到自适应安全（Adaptive Security）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;密钥策略与密文策略的融合&lt;/strong&gt;：支持更灵活的策略表达&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可撤销 ABE&lt;/strong&gt;：解决密钥托管和用户撤销问题&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;高效实现&lt;/strong&gt;：减少双线性配对计算次数&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="学习心得"&gt;学习心得
&lt;/h2&gt;&lt;p&gt;这篇论文是属性基加密领域的里程碑之作。从 KP-ABE 到 CP-ABE 的范式反转看似简单，但实现起来需要在双线性配对上做大量精巧的数学构造。特别是将 LSSS 与加密结合的设计，展现了密码学方案设计中「抽象代数工具 + 密码学假设」的经典范式。&lt;/p&gt;
&lt;p&gt;理解了这篇论文后，再去看后续的 ABE 变体（如内积 ABE、功能加密等）会顺畅很多——它们大多是在这个基础上做的扩展和加强。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;论文原文&lt;/strong&gt;：Bethencourt, J., Sahai, A., &amp;amp; Waters, B. (2007). Ciphertext-Policy Attribute-Based Encryption. &lt;em&gt;IEEE Symposium on Security and Privacy&lt;/em&gt;, 40-53.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;论文链接&lt;/strong&gt;：https://ieeexplore.ieee.org/abstract/document/4223236&lt;/p&gt;</description></item><item><title>属性加密通俗指南：让云上的数据「认人不认脸」</title><link>https://meteor0313.github.io/p/%E5%B1%9E%E6%80%A7%E5%8A%A0%E5%AF%86%E9%80%9A%E4%BF%97%E6%8C%87%E5%8D%97%E8%AE%A9%E4%BA%91%E4%B8%8A%E7%9A%84%E6%95%B0%E6%8D%AE%E8%AE%A4%E4%BA%BA%E4%B8%8D%E8%AE%A4%E8%84%B8/</link><pubDate>Mon, 17 Aug 2026 00:00:00 +0000</pubDate><guid>https://meteor0313.github.io/p/%E5%B1%9E%E6%80%A7%E5%8A%A0%E5%AF%86%E9%80%9A%E4%BF%97%E6%8C%87%E5%8D%97%E8%AE%A9%E4%BA%91%E4%B8%8A%E7%9A%84%E6%95%B0%E6%8D%AE%E8%AE%A4%E4%BA%BA%E4%B8%8D%E8%AE%A4%E8%84%B8/</guid><description>&lt;h2 id="先从一个场景说起"&gt;先从一个场景说起
&lt;/h2&gt;&lt;p&gt;想象你有一份机密文档，放在云盘上。你希望：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;公司内部**部门是「研发部」且职级是「经理以上」**的人可以打开&lt;/li&gt;
&lt;li&gt;其他人，哪怕知道文件在哪，也打不开&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;传统加密的做法是：生成一把密码，发给每个符合条件的人。问题来了——如果公司有一天新增了 100 个经理，你得给每个人单独发一把密码；如果有人离职了，你还得逐个通知他「密码作废」并重新加密文件。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这太麻烦了。&lt;/strong&gt; 属性加密（Attribute-Based Encryption，简称 &lt;strong&gt;ABE&lt;/strong&gt;）就是来解决这个问题的。&lt;/p&gt;
&lt;h2 id="什么是属性加密"&gt;什么是属性加密？
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;一句话概括：ABE 让加密文件「认识属性，不认识具体的人」。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="类比智能门禁"&gt;类比：智能门禁
&lt;/h3&gt;&lt;p&gt;想象一个智能大楼的刷卡门禁：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;传统方式&lt;/th&gt;
					&lt;th&gt;ABE 方式&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;保安记住每个能进的人是谁，逐个核对&lt;/td&gt;
					&lt;td&gt;门禁只看「你是不是研发部的经理」这个条件&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;新人来了要更新名单&lt;/td&gt;
					&lt;td&gt;只要新人的工牌上有「研发部+经理」属性，自动放行&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;人走了要从名单删除&lt;/td&gt;
					&lt;td&gt;只要收回他的工牌（私钥）就行&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;ABE 就是把这套逻辑搬到了加密世界里：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;加密时&lt;/strong&gt;：你指定一个规则——「只有同时拥有『研发部』和『经理』属性的人才能解密」&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;解密时&lt;/strong&gt;：用户用携带自己属性的私钥去尝试解密，属性满足规则就成功，不满足就失败&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="abe-的两种流派"&gt;ABE 的两种流派
&lt;/h3&gt;&lt;p&gt;ABE 有两种主要范式，它们的核心区别是「规则写在谁身上」：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;类型&lt;/th&gt;
					&lt;th&gt;规则（策略）在哪里&lt;/th&gt;
					&lt;th&gt;举例&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;KP-ABE&lt;/strong&gt;（密钥策略）&lt;/td&gt;
					&lt;td&gt;用户的&lt;strong&gt;私钥&lt;/strong&gt;里&lt;/td&gt;
					&lt;td&gt;用户的私钥说：「我能解密『研发部』的文件」，文件只需标注「研发部」即可&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;CP-ABE&lt;/strong&gt;（密文策略）&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;密文&lt;/strong&gt;里&lt;/td&gt;
					&lt;td&gt;文件说：「只有『研发部』的人能开」，用户私钥只需携带「研发部」属性&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;实际中 CP-ABE 更常用&lt;/strong&gt;——因为文件上传者可以直接指定谁能看，不需要预先知道所有用户的身份。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="abe-怎么用四个关键角色"&gt;ABE 怎么用？四个关键角色
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;+--------------------------------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| 权威机构（Authority） |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| 生成系统参数，根据用户属性发放私钥 |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;+------------------------+-------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; | 发放私钥
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; v
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;+--------------------------------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| 数据上传者（User A） |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| 用属性规则加密文件 -&amp;gt; 上传到云 |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| 例：「部门=研发 AND 职级&amp;gt;=经理」 |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;+------------------------+-------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; | 加密后的文件
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; v
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;+--------------------------------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| 云存储服务器 |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| 只存文件，不看内容 |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;+------------------------+-------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; | 下载文件
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; v
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;+--------------------------------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| 数据下载者（User B） |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| 用自己的私钥（含属性）尝试解密 |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| 属性满足规则 -&amp;gt; 解密成功 |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| 属性不满足 -&amp;gt; 解密失败 |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;+--------------------------------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="研究人员都在攻克哪些难题"&gt;研究人员都在攻克哪些难题？
&lt;/h2&gt;&lt;p&gt;上面说的只是 ABE 的理想形态。现实应用中有一堆问题需要解决。两篇综述论文（《基于属性加密技术研究综述》和《云存储环境下属性基加密综述》）系统地梳理了以下方向：&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="难题一效率太慢"&gt;难题一：效率太慢
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：ABE 的核心运算叫「双线性配对」（Bilinear Pairing），这是一种数学上很安全的运算，但&lt;strong&gt;非常耗时&lt;/strong&gt;。如果访问规则很复杂（比如涉及几十种属性），加密和解密的速度会让人无法接受。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;在线/离线拆分&lt;/strong&gt;（Hohenberger &amp;amp; Waters, 2014）：把计算分成两部分——离线阶段预先算好（不依赖具体数据），在线阶段只做少量计算。就像提前备好食材，炒菜时只加热就行。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;密文大小恒定&lt;/strong&gt;：无论规则多复杂，加密后的文件体积不变。这对网络传输很重要。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;快速解密&lt;/strong&gt;：让解密端（通常是手机等弱设备）的计算量尽量少。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;外包解密&lt;/strong&gt;：把繁重的解密计算交给云服务器做，但云服务器只能帮忙算，&lt;strong&gt;看不到最终结果&lt;/strong&gt;。用户只需要在本地做一次轻量级验证。&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;通俗理解&lt;/strong&gt;：就像你去餐厅吃饭，后厨（云）负责切菜炒菜（重计算），你只需在桌上把菜拌匀就能吃（轻验证），餐厅老板看不到你吃的是什么。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="难题二规则被偷看了"&gt;难题二：规则被偷看了
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：在标准 ABE 中，文件的访问规则是&lt;strong&gt;明文写在密文里&lt;/strong&gt;的。任何人下载了文件，虽然打不开内容，但能读到规则——「只有研发部经理能看」——这就泄露了信息。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：&lt;strong&gt;策略隐藏&lt;/strong&gt;（Policy Hiding）。加密后连规则本身也是加密的，只有符合条件的用户解密后才能看到规则。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;通俗理解&lt;/strong&gt;：传统方式是门上贴着「只有经理能进」；策略隐藏是门什么也不贴，你刷一下卡才知道自己能不能进。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="难题三谁来给用户发属性"&gt;难题三：谁来给用户发属性？
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：一个公司可能有 HR、财务、研发等多个部门，每个部门有自己的属性体系。如果只有一个权威机构管所有属性，那它就成了&lt;strong&gt;万能管理员&lt;/strong&gt;——能签发任何属性，这是巨大的安全风险。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：&lt;strong&gt;多授权中心&lt;/strong&gt;（Multi-Authority ABE）。不同的属性由不同的机构签发：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HR 部门管「部门」属性&lt;/li&gt;
&lt;li&gt;人力资源部管「职级」属性&lt;/li&gt;
&lt;li&gt;用户从多个机构收集自己的属性私钥，拼在一起就能解密&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;通俗理解&lt;/strong&gt;：就像你考驾照需要车管所发，身份证需要派出所发，大学文凭需要学校发——各司其职，没有谁能单独给你完整的身份。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="难题四人在江湖身份会变"&gt;难题四：人在江湖，身份会变
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：员工离职了、转岗了、或者只是临时外借，他的属性需要改变。传统做法是：重新给他签发私钥，同时把所有相关文件重新加密——工作量巨大。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：&lt;strong&gt;属性撤销&lt;/strong&gt;（Attribute Revocation）。系统支持高效地撤销某个用户的某个属性，而不需要重新加密所有文件。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;通俗理解&lt;/strong&gt;：就像门禁系统里把离职员工的权限一键删除，而不需要把所有门的锁都换掉。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="难题五加密后没法搜索"&gt;难题五：加密后没法搜索
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：文件加密上传后，连文件名和内容都是密文。你没法在云端搜索「研发部 2024 预算」这类关键词——搜不了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：&lt;strong&gt;可搜索属性加密&lt;/strong&gt;（Searchable ABE）。允许用户在加密数据上执行关键词搜索，服务器帮助过滤，但&lt;strong&gt;不知道用户搜了什么，也不知道文件的明文内容&lt;/strong&gt;。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;通俗理解&lt;/strong&gt;：就像你在图书馆的加密档案室搜书，管理员帮你找到可能匹配的书，但管理员不知道你搜的关键词是什么，也不知道书里写了什么。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="难题六私钥被卖了怎么办"&gt;难题六：私钥被卖了怎么办？
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：如果某个用户的私钥被盗，被盗用的用户用它解密了不该看的文件，&lt;strong&gt;系统无法知道是谁泄露的&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：&lt;strong&gt;叛徒追踪&lt;/strong&gt;（Traitor Tracing）。系统能在发现私钥被滥用时，&lt;strong&gt;反向追溯到是哪位用户泄露了私钥&lt;/strong&gt;。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;通俗理解&lt;/strong&gt;：就像图书馆的书被偷了，虽然书上的名字被撕掉了，但书里夹着的追踪墨水能定位到是谁拿走的。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="难题七安全性还不够强"&gt;难题七：安全性还不够强
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：早期 ABE 方案只能证明「选择性安全」（Selective Security）——攻击者必须在攻击前声明目标属性集。这在实际中不够强。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;自适应安全&lt;/strong&gt;（Adaptive Security）：攻击者可以随时选择攻击目标，安全性仍然成立。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;双系统加密技术&lt;/strong&gt;：通过巧妙构造两套加密系统，实现从选择性安全到自适应安全的跨越。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="难题八混合策略"&gt;难题八：混合策略
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：有时候 KP-ABE 和 CP-ABE 各有优势，能否结合？&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：&lt;strong&gt;双策略 ABE&lt;/strong&gt;（Dual-Policy ABE），同时支持密钥策略和密文策略，提供更灵活的访问控制能力。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="未来方向展望"&gt;未来方向展望
&lt;/h2&gt;&lt;p&gt;两篇综述都指出了以下值得关注的方向：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;方向&lt;/th&gt;
					&lt;th&gt;说明&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;抗量子 ABE&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;未来的量子计算机能破解当前的 ABE 方案，需要基于格（Lattice）等抗量子假设重新设计&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;更细粒度的策略&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;支持「属性值范围」（如年龄 25~35）而非简单的「有无属性」&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;联邦学习 + ABE&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;多方数据在不解密的情况下联合训练 AI 模型&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;区块链 + ABE&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;用区块链管理属性签发和撤销，解决单点信任问题&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;更高效的实现&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;减少双线性配对次数，让 ABE 能在手机等弱设备上实用&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="小结"&gt;小结
&lt;/h2&gt;&lt;p&gt;属性加密的核心魅力在于：&lt;strong&gt;它把「谁能访问数据」这件事，从人变成了属性&lt;/strong&gt;。这让数据共享变得前所未有的灵活——你不需要知道具体是谁，只需要定义规则。&lt;/p&gt;
&lt;p&gt;但它也带来了复杂的工程挑战：计算效率、策略隐私、多机构协作、身份动态变化、加密后搜索……每一个问题背后都有研究者用精妙的数学在寻找答案。&lt;/p&gt;
&lt;p&gt;理解 ABE 的这些核心问题和方案，是进入现代密码学和隐私计算领域的重要一步。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;参考文献&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;王生玉, 汪金苗, 董清风, 朱瑞瑾. 基于属性加密技术研究综述[J]. 信息网络安全, 2019, 19(9): 76-80.&lt;/li&gt;
&lt;li&gt;赵志远, 王建华, 朱智强, 孙磊. 云存储环境下属性基加密综述[J]. 计算机应用研究, 2018, 35(4).&lt;/li&gt;
&lt;li&gt;Sahai A, Waters B. Fuzzy Identity-based Encryption[C]. Eurocrypt 2005.&lt;/li&gt;
&lt;li&gt;Bethencourt J, Sahai A, Waters B. Ciphertext-Policy Attribute-Based Encryption[C]. IEEE S&amp;amp;P 2007.&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Markdown 语法速查手册</title><link>https://meteor0313.github.io/p/markdown-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5%E6%89%8B%E5%86%8C/</link><pubDate>Thu, 16 Jul 2026 00:00:00 +0000</pubDate><guid>https://meteor0313.github.io/p/markdown-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5%E6%89%8B%E5%86%8C/</guid><description>&lt;p&gt;Markdown 是一种轻量级标记语言，让你可以用纯文本格式编写文档。以下是常用语法总结。&lt;/p&gt;
&lt;h2 id="标题"&gt;标题
&lt;/h2&gt;&lt;p&gt;用 &lt;code&gt;#&lt;/code&gt; 号表示标题，一个 &lt;code&gt;#&lt;/code&gt; 是一级标题，最多六个。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gh"&gt;# 一级标题
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 二级标题
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;### 三级标题
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;#### 四级标题
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="文本样式"&gt;文本样式
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;**粗体文本**
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="ge"&gt;*斜体文本*&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="ge"&gt;**&lt;/span&gt;*粗斜体文本***
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gd"&gt;~~删除线文本~~&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sb"&gt;`行内代码`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;效果：&lt;strong&gt;粗体文本&lt;/strong&gt;、&lt;em&gt;斜体文本&lt;/em&gt;、&lt;em&gt;&lt;strong&gt;粗斜体文本&lt;/strong&gt;&lt;/em&gt;、&lt;del&gt;删除线文本&lt;/del&gt;、&lt;code&gt;行内代码&lt;/code&gt;&lt;/p&gt;
&lt;h2 id="列表"&gt;列表
&lt;/h2&gt;&lt;h3 id="无序列表"&gt;无序列表
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 项目一
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 项目二
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;-&lt;/span&gt; 子项目
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;效果：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;项目一&lt;/li&gt;
&lt;li&gt;项目二
&lt;ul&gt;
&lt;li&gt;子项目&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="有序列表"&gt;有序列表
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;1.&lt;/span&gt; 第一步
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;2.&lt;/span&gt; 第二步
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;3.&lt;/span&gt; 第三步
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;效果：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;第一步&lt;/li&gt;
&lt;li&gt;第二步&lt;/li&gt;
&lt;li&gt;第三步&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="链接与图片"&gt;链接与图片
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[&lt;span class="nt"&gt;链接文字&lt;/span&gt;](&lt;span class="na"&gt;https://example.com&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;![&lt;span class="nt"&gt;图片描述&lt;/span&gt;](&lt;span class="na"&gt;图片URL&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="引用"&gt;引用
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;&amp;gt; &lt;/span&gt;&lt;span class="ge"&gt;这是一段引用文字
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;&amp;gt; &lt;/span&gt;&lt;span class="ge"&gt;可以多行
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;效果：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;这是一段引用文字
可以多行&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="代码块"&gt;代码块
&lt;/h2&gt;&lt;p&gt;用三个反引号包裹代码，可以指定语言实现高亮：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;```python
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;hello&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Hello, World!&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;```&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;效果：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;hello&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Hello, World!&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="表格"&gt;表格
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| 左对齐 | 居中对齐 | 右对齐 |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;|:-------|:-------:|-------:|
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| 内容1 | 内容2 | 内容3 |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| 内容4 | 内容5 | 内容6 |
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;效果：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style="text-align: left"&gt;左对齐&lt;/th&gt;
					&lt;th style="text-align: center"&gt;居中对齐&lt;/th&gt;
					&lt;th style="text-align: right"&gt;右对齐&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;内容1&lt;/td&gt;
					&lt;td style="text-align: center"&gt;内容2&lt;/td&gt;
					&lt;td style="text-align: right"&gt;内容3&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;内容4&lt;/td&gt;
					&lt;td style="text-align: center"&gt;内容5&lt;/td&gt;
					&lt;td style="text-align: right"&gt;内容6&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="分割线"&gt;分割线
&lt;/h2&gt;&lt;p&gt;用三个或更多 &lt;code&gt;-&lt;/code&gt;、&lt;code&gt;*&lt;/code&gt; 或 &lt;code&gt;_&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="任务列表"&gt;任务列表
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;- [x]&lt;/span&gt; 已完成
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;- [ ]&lt;/span&gt; 未完成
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;- [ ]&lt;/span&gt; 待办事项
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;效果：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; 已完成&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 未完成&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 待办事项&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="脚注"&gt;脚注
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;这里有个脚注[^1]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[^1]: 这是脚注内容
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="数学公式"&gt;数学公式
&lt;/h2&gt;&lt;p&gt;行内公式用 &lt;code&gt;$...$&lt;/code&gt;，块级公式用 &lt;code&gt;$$...$$&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$E = mc^2$
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$$
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;\sum_{i=1}^{n} i = \frac{n(n+1)}{2}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$$
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="快捷键速查"&gt;快捷键速查
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;功能&lt;/th&gt;
					&lt;th&gt;语法&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;加粗&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;**文本**&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;斜体&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;*文本*&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;标题&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;# 标题&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;链接&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;[文字](链接)&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;图片&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;![描述](URL)&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;代码&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;`代码`&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;引用&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;&amp;gt; 引用&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;列表&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;- 项目&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;p&gt;掌握这些基本语法就够日常使用了！&lt;/p&gt;</description></item><item><title>Microsoft SEAL 入门：同态加密实战</title><link>https://meteor0313.github.io/p/microsoft-seal-%E5%85%A5%E9%97%A8%E5%90%8C%E6%80%81%E5%8A%A0%E5%AF%86%E5%AE%9E%E6%88%98/</link><pubDate>Thu, 16 Jul 2026 00:00:00 +0000</pubDate><guid>https://meteor0313.github.io/p/microsoft-seal-%E5%85%A5%E9%97%A8%E5%90%8C%E6%80%81%E5%8A%A0%E5%AF%86%E5%AE%9E%E6%88%98/</guid><description>&lt;h2 id="什么是同态加密"&gt;什么是同态加密？
&lt;/h2&gt;&lt;p&gt;同态加密（Homomorphic Encryption）是一种特殊的加密方式，允许在密文上直接进行计算，解密后的结果与在明文上计算的结果相同。&lt;/p&gt;
&lt;p&gt;简单来说：&lt;strong&gt;数据加密后依然可以计算&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="microsoft-seal-简介"&gt;Microsoft SEAL 简介
&lt;/h2&gt;&lt;p&gt;Microsoft SEAL 是微软开发的开源同态加密库，支持以下三种方案：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;BFV&lt;/strong&gt;：支持整数加法和乘法&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CKKS&lt;/strong&gt;：支持近似浮点数运算&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;BGV&lt;/strong&gt;：支持整数运算，更适合批处理&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="快速上手"&gt;快速上手
&lt;/h2&gt;&lt;h3 id="安装"&gt;安装
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/microsoft/SEAL.git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; SEAL
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cmake -S . -B build
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cmake --build build
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="基本使用示例"&gt;基本使用示例
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;#34;seal/seal.h&amp;#34;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="k"&gt;namespace&lt;/span&gt; &lt;span class="n"&gt;seal&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 创建加密参数
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;EncryptionParameters&lt;/span&gt; &lt;span class="nf"&gt;params&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;scheme_type&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;ckks&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;size_t&lt;/span&gt; &lt;span class="n"&gt;poly_modulus_degree&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;8192&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;set_poly_modulus_degree&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;poly_modulus_degree&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;coeff_modulus_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;CoeffModulus&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;poly_modulus_degree&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 创建 SEALContext
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;SEALContext&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 创建编码器、加密器、评估器
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;CKKSEncoder&lt;/span&gt; &lt;span class="nf"&gt;encoder&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Encryptor&lt;/span&gt; &lt;span class="nf"&gt;encryptor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;key_generator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;public_key&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Evaluator&lt;/span&gt; &lt;span class="nf"&gt;evaluator&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Decryptor&lt;/span&gt; &lt;span class="nf"&gt;decryptor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;key_generator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;secret_key&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 编码、加密、计算、解密
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;vector&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;double&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;input&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;1.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;2.0&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Plaintext&lt;/span&gt; &lt;span class="n"&gt;plain&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;encoder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;encode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;plain&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Ciphertext&lt;/span&gt; &lt;span class="n"&gt;encrypted&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;encryptor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;encrypt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;plain&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;encrypted&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 在密文上进行加法
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;evaluator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;add_inplace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;encrypted&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;encrypted&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="实际应用场景"&gt;实际应用场景
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;隐私保护的机器学习&lt;/strong&gt;：在加密数据上训练模型&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;安全多方计算&lt;/strong&gt;：多方协作计算而不泄露各自数据&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;云计算隐私&lt;/strong&gt;：将数据加密后上传云端计算&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="学习心得"&gt;学习心得
&lt;/h2&gt;&lt;p&gt;同态加密的计算开销很大，但随着硬件加速和算法优化，正在逐步走向实用。SEAL 的文档和示例非常完善，是入门同态加密的好选择。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;项目地址&lt;/strong&gt;：https://github.com/microsoft/SEAL&lt;/p&gt;</description></item><item><title>家用智能灌溉系统设计与实现</title><link>https://meteor0313.github.io/p/%E5%AE%B6%E7%94%A8%E6%99%BA%E8%83%BD%E7%81%8C%E6%BA%89%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1%E4%B8%8E%E5%AE%9E%E7%8E%B0/</link><pubDate>Thu, 16 Jul 2026 00:00:00 +0000</pubDate><guid>https://meteor0313.github.io/p/%E5%AE%B6%E7%94%A8%E6%99%BA%E8%83%BD%E7%81%8C%E6%BA%89%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1%E4%B8%8E%E5%AE%9E%E7%8E%B0/</guid><description>&lt;h2 id="研究背景"&gt;研究背景
&lt;/h2&gt;&lt;p&gt;随着现代生活节奏的加快，许多家庭主人因为工作需要经常出差，导致家中的绿植长时间无人照料。植物因长期缺乏水分和光照，容易出现叶子枯黄、生长不良等问题，严重时甚至会导致植株死亡。&lt;/p&gt;
&lt;p&gt;为了解决这一问题，本项目设计了一套&lt;strong&gt;家用智能灌溉系统&lt;/strong&gt;，能够自动监测环境数据并智能控制灌溉，让用户即使不在家也能呵护心爱的绿植。&lt;/p&gt;
&lt;h2 id="系统概述"&gt;系统概述
&lt;/h2&gt;&lt;p&gt;本项目旨在构建一套适合家庭使用的智能灌溉系统，主要功能包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;实时监测&lt;/strong&gt;：采集土壤湿度、温度、光照等环境数据&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;智能灌溉&lt;/strong&gt;：根据监测数据自动调节灌溉水量和时间&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;语音控制&lt;/strong&gt;：集成语音模块，支持语音指令操作&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;远程操控&lt;/strong&gt;：通过WiFi将数据上云，支持手机小程序远程控制&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="系统架构"&gt;系统架构
&lt;/h2&gt;&lt;p&gt;智能灌溉系统采用三层架构设计：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;┌─────────────────────────────────────────────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ 应用层 │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ 串口屏显示 │ 小程序控制 │ 云平台数据存储 │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─────────────────────────────────────────────────────┤
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ 网络层 │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ESP8266 WiFi │ ZX-D30 蓝牙 │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─────────────────────────────────────────────────────┤
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ 感知层 │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ 土壤湿度传感器 │ 温度传感器 │ 光照传感器 │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└─────────────────────────────────────────────────────┘
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style="text-align: center"&gt;层级&lt;/th&gt;
					&lt;th style="text-align: left"&gt;组件&lt;/th&gt;
					&lt;th style="text-align: left"&gt;功能&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style="text-align: center"&gt;&lt;strong&gt;感知层&lt;/strong&gt;&lt;/td&gt;
					&lt;td style="text-align: left"&gt;土壤湿度传感器、DS18B20温度传感器、BH1750光照传感器&lt;/td&gt;
					&lt;td style="text-align: left"&gt;采集环境数据&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: center"&gt;&lt;strong&gt;网络层&lt;/strong&gt;&lt;/td&gt;
					&lt;td style="text-align: left"&gt;ESP8266 WiFi、ZX-D30蓝牙&lt;/td&gt;
					&lt;td style="text-align: left"&gt;数据传输与通信&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: center"&gt;&lt;strong&gt;应用层&lt;/strong&gt;&lt;/td&gt;
					&lt;td style="text-align: left"&gt;TJC3224T124串口屏、继电器水泵、云平台小程序&lt;/td&gt;
					&lt;td style="text-align: left"&gt;用户交互与控制&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="硬件设备"&gt;硬件设备
&lt;/h2&gt;&lt;p&gt;系统核心硬件包括：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style="text-align: left"&gt;设备&lt;/th&gt;
					&lt;th style="text-align: left"&gt;型号&lt;/th&gt;
					&lt;th style="text-align: left"&gt;功能说明&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;主控芯片&lt;/td&gt;
					&lt;td style="text-align: left"&gt;&lt;strong&gt;STM32F103C8T6&lt;/strong&gt;&lt;/td&gt;
					&lt;td style="text-align: left"&gt;系统核心，负责数据处理和设备通信&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;温湿度传感器&lt;/td&gt;
					&lt;td style="text-align: left"&gt;DHT11&lt;/td&gt;
					&lt;td style="text-align: left"&gt;实时采集环境温湿度&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;光照传感器&lt;/td&gt;
					&lt;td style="text-align: left"&gt;BH1750&lt;/td&gt;
					&lt;td style="text-align: left"&gt;监测光照强度&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;土壤湿度传感器&lt;/td&gt;
					&lt;td style="text-align: left"&gt;电容式&lt;/td&gt;
					&lt;td style="text-align: left"&gt;检测土壤含水量&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;语音模块&lt;/td&gt;
					&lt;td style="text-align: left"&gt;ASRPRO&lt;/td&gt;
					&lt;td style="text-align: left"&gt;实现语音控制功能&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;WiFi模块&lt;/td&gt;
					&lt;td style="text-align: left"&gt;ESP8266&lt;/td&gt;
					&lt;td style="text-align: left"&gt;无线网络连接，数据上云&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;蓝牙模块&lt;/td&gt;
					&lt;td style="text-align: left"&gt;ZX-D30&lt;/td&gt;
					&lt;td style="text-align: left"&gt;近距离无线通信&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;串口屏&lt;/td&gt;
					&lt;td style="text-align: left"&gt;TJC3224T124&lt;/td&gt;
					&lt;td style="text-align: left"&gt;显示系统状态&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;继电器模块&lt;/td&gt;
					&lt;td style="text-align: left"&gt;5V继电器&lt;/td&gt;
					&lt;td style="text-align: left"&gt;控制水泵开关&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;水泵&lt;/td&gt;
					&lt;td style="text-align: left"&gt;直流潜水泵&lt;/td&gt;
					&lt;td style="text-align: left"&gt;执行灌溉操作&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="软件设计"&gt;软件设计
&lt;/h2&gt;&lt;p&gt;系统软件基于 MQTT 协议实现数据上云，用户可通过小程序远程监控和控制灌溉系统。&lt;/p&gt;
&lt;h3 id="数据流程"&gt;数据流程
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;传感器采集 → STM32处理 → ESP8266上传 → 云平台存储 → 小程序显示
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 语音模块本地控制
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="主要功能模块"&gt;主要功能模块
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;数据采集模块&lt;/strong&gt;：定时读取各传感器数据&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;灌溉决策算法&lt;/strong&gt;：根据土壤湿度自动判断是否灌溉&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;通信模块&lt;/strong&gt;：通过MQTT协议与云平台通信&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用户界面&lt;/strong&gt;：串口屏本地显示 + 小程序远程控制&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="总结与展望"&gt;总结与展望
&lt;/h2&gt;&lt;p&gt;本项目实现了家用智能灌溉系统的基本功能，能够自动监测环境数据并智能控制灌溉。未来可从以下方面继续优化：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AI 算法&lt;/strong&gt;：引入机器学习，根据植物种类和生长阶段优化灌溉策略&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多传感器融合&lt;/strong&gt;：增加雨滴传感器、水位传感器，实现更精准的控制&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;能源管理&lt;/strong&gt;：集成太阳能供电，实现绿色环保&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;语音交互&lt;/strong&gt;：升级语音模块，支持更自然的对话交互&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;本项目为个人学习实践，持续更新中&amp;hellip;&lt;/em&gt;&lt;/p&gt;</description></item><item><title>libOTe：不经意传输扩展库详解</title><link>https://meteor0313.github.io/p/libote%E4%B8%8D%E7%BB%8F%E6%84%8F%E4%BC%A0%E8%BE%93%E6%89%A9%E5%B1%95%E5%BA%93%E8%AF%A6%E8%A7%A3/</link><pubDate>Wed, 15 Jul 2026 00:00:00 +0000</pubDate><guid>https://meteor0313.github.io/p/libote%E4%B8%8D%E7%BB%8F%E6%84%8F%E4%BC%A0%E8%BE%93%E6%89%A9%E5%B1%95%E5%BA%93%E8%AF%A6%E8%A7%A3/</guid><description>&lt;h2 id="什么是不经意传输"&gt;什么是不经意传输？
&lt;/h2&gt;&lt;p&gt;不经意传输（Oblivious Transfer, OT）是安全多方计算的基础协议之一。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;场景&lt;/strong&gt;：发送方有两条消息 m0 和 m1，接收方选择接收其中一条。协议保证：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;接收方只能获得自己选择的消息&lt;/li&gt;
&lt;li&gt;发送方不知道接收方选择了哪条&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="ot-扩展ot-extension"&gt;OT 扩展（OT Extension）
&lt;/h2&gt;&lt;p&gt;基础 OT 协议通信开销大，OT 扩展技术可以用少量基础 OT 生成大量 OT 实例。&lt;/p&gt;
&lt;h2 id="libote-简介"&gt;libOTe 简介
&lt;/h2&gt;&lt;p&gt;libOTe 是俄亥俄州立大学（OSU）密码学组开发的高性能 C++20 OT 扩展库。&lt;/p&gt;
&lt;h3 id="支持的协议"&gt;支持的协议
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;半诚实模型&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1-out-of-2 Silent OT&lt;/li&gt;
&lt;li&gt;1-out-of-2 Correlated OT&lt;/li&gt;
&lt;li&gt;1-out-of-N OT&lt;/li&gt;
&lt;li&gt;VOLE（向量不经意线性求值）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;恶意模型&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;KOS15 协议&lt;/li&gt;
&lt;li&gt;Silent OT&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="特点"&gt;特点
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;高性能：使用 SSE 指令和向量化优化&lt;/li&gt;
&lt;li&gt;跨平台：支持 Windows、Linux、macOS&lt;/li&gt;
&lt;li&gt;易用：提供简洁的 API 和前端示例&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="编译与使用"&gt;编译与使用
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/osu-crypto/libOTe.git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; libOTe
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python3 build.py
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="基本示例"&gt;基本示例
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;#34;libOTe/TwoChooseOne/TcoOtExtReceiver.h&amp;#34;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;#34;libOTe/TwoChooseOne/TcoOtExtSender.h&amp;#34;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 创建 OT 扩展实例
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;OttExtReceiver&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;receiver&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;IknpOtExtReceiver&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;OttExtSender&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;sender&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;IknpOtExtSender&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 执行 OT 扩展
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;sender&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;genBaseOts&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;receiver&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;genBaseOts&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;vector&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;128&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;sender&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;numOTs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;prng&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;coproto&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;io&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;receiver&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;receive&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;choiceBits&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;numOTs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;prng&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;coproto&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;io&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="在隐私计算中的应用"&gt;在隐私计算中的应用
&lt;/h2&gt;&lt;p&gt;OT 扩展是许多 MPC 协议的基础组件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PSI（隐私集合交集）&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PIR（隐私信息检索）&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;安全函数评估（SFE）&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;项目地址&lt;/strong&gt;：https://github.com/osu-crypto/libOTe&lt;/p&gt;</description></item><item><title>Vole-PSI：基于向量 OLE 的隐私集合交集</title><link>https://meteor0313.github.io/p/vole-psi%E5%9F%BA%E4%BA%8E%E5%90%91%E9%87%8F-ole-%E7%9A%84%E9%9A%90%E7%A7%81%E9%9B%86%E5%90%88%E4%BA%A4%E9%9B%86/</link><pubDate>Tue, 14 Jul 2026 00:00:00 +0000</pubDate><guid>https://meteor0313.github.io/p/vole-psi%E5%9F%BA%E4%BA%8E%E5%90%91%E9%87%8F-ole-%E7%9A%84%E9%9A%90%E7%A7%81%E9%9B%86%E5%90%88%E4%BA%A4%E9%9B%86/</guid><description>&lt;h2 id="什么是隐私集合交集psi"&gt;什么是隐私集合交集（PSI）？
&lt;/h2&gt;&lt;p&gt;隐私集合交集（Private Set Intersection）允许两方在不泄露各自集合内容的前提下，计算出两个集合的交集。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;应用场景&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;基因数据对比&lt;/li&gt;
&lt;li&gt;联合风控&lt;/li&gt;
&lt;li&gt;好友推荐&lt;/li&gt;
&lt;li&gt;广告转化率统计&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="vole-psi-的创新"&gt;Vole-PSI 的创新
&lt;/h2&gt;&lt;p&gt;Vole-PSI 基于向量不经意线性求值（Vector OLE）构建，相比传统 OT-based PSI 方案：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;通信效率更高&lt;/strong&gt;：向量 OLE 的通信开销与集合大小近似线性&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;计算更快&lt;/strong&gt;：利用 OKVS（Oblivious Key-Value Store）减少计算量&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;支持 Circuit PSI&lt;/strong&gt;：结果以秘密共享形式输出&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="技术原理"&gt;技术原理
&lt;/h2&gt;&lt;h3 id="向量-olevector-ole"&gt;向量 OLE（Vector OLE）
&lt;/h3&gt;&lt;p&gt;向量 OLE 是 OT 的推广形式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;发送方输入向量 &lt;strong&gt;a&lt;/strong&gt;，接收方输入标量 &lt;strong&gt;b&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;输出：发送方得到 &lt;strong&gt;r&lt;/strong&gt;，接收方得到 &lt;strong&gt;s&lt;/strong&gt; = &lt;strong&gt;a&lt;/strong&gt; · &lt;strong&gt;b&lt;/strong&gt; + &lt;strong&gt;r&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="协议流程"&gt;协议流程
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;双方通过 Vector OLE 生成关联的掩码值&lt;/li&gt;
&lt;li&gt;使用 OKVS 编码各自集合&lt;/li&gt;
&lt;li&gt;通过掩码值匹配交集元素&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="编译与使用"&gt;编译与使用
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/Visa-Research/volepsi.git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; volepsi
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python3 build.py -DVOLE_PSI_ENABLE_BOOST&lt;span class="o"&gt;=&lt;/span&gt;ON
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="前端使用"&gt;前端使用
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 发送方&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./frontend -role sender -set input_sender.txt -output result.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 接收方&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./frontend -role receiver -set input_receiver.txt -output result.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="性能对比"&gt;性能对比
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;方案&lt;/th&gt;
					&lt;th&gt;通信开销&lt;/th&gt;
					&lt;th&gt;计算时间（1M 元素）&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;ECDH-PSI&lt;/td&gt;
					&lt;td&gt;O(n)&lt;/td&gt;
					&lt;td&gt;~10s&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;OT-based PSI&lt;/td&gt;
					&lt;td&gt;O(n)&lt;/td&gt;
					&lt;td&gt;~5s&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Vole-PSI&lt;/td&gt;
					&lt;td&gt;O(n)&lt;/td&gt;
					&lt;td&gt;~2s&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="学习心得"&gt;学习心得
&lt;/h2&gt;&lt;p&gt;Vole-PSI 的代码结构清晰，依赖管理做得很好。通过学习这个项目，我对向量 OLE 和 OKVS 有了更深入的理解。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;项目地址&lt;/strong&gt;：https://github.com/Visa-Research/volepsi&lt;/p&gt;</description></item></channel></rss>