ABY库基础介绍--(1)_aby8映射(1)

  • circuit: 这个子目录包含了对SMC电路运行时间和内存占用进行基准测试的脚本和结果。可以使用这些脚本来评估ABY库在不同计算场景下的性能和资源占用情况。

  • hamming\_weight: 这个子目录包含了对汉明重量算法进行基准测试的脚本和结果。可以使用这些脚本来评估ABY库中汉明重量算法的性能和吞吐量。

  • matrix: 这个子目录包含了对矩阵乘法算法进行基准测试的脚本和结果。可以使用这些脚本来评估ABY库中矩阵乘法算法的性能和吞吐量。

  • sorting: 这个子目录包含了对排序算法进行基准测试的脚本和结果。可以使用这些脚本来评估ABY库中排序算法的性能和吞吐量。

  • test\_common: 这个子目录包含了对公共输入和输出(CIO)机制进行基准测试的脚本和结果。可以使用这些脚本来评估ABY库中CIO机制的性能和吞吐量。

这些基准测试文件和脚本可以帮助用户了解ABY库在不同场景下的性能表现,同时也可以用于优化和改进ABY库的实现。如果你想了解ABY库的性能和资源占用情况,你可以使用这些基准测试脚本进行测试和分析。
3. ABY 中的euclidean_distance文件夹
在ABY库的src/euclidean\_distance目录中,包含了计算欧几里得距离的源代码。这个目录中包含了以下文件:

  • euclidean\_distance.h:这个文件定义了用于计算欧几里得距离的函数接口。

  • euclidean\_distance.cpp:这个文件实现了计算欧几里得距离的算法,包括对向量的点积、减法、平方等操作。

这些文件提供一个计算欧几里得距离的函数,可以用于在安全多方计算(SMC)场景中对输入数据进行加密和保护。例如,在一个SMC算法中,不同参与者拥有各自的输入数据,他们可以分别使用这个函数计算自己的输入数据的欧几里得距离并进行互相比较,而不需要暴露各自的原始输入数据。这个目录中的代码展示了ABY库的使用方法,帮助用户了解如何在ABY中使用这个函数。
4. ABY 中的float文件夹
在ABY库的src/float目录中,包含了一些浮点数运算的源代码。具体来说,这个目录中包含了以下文件和子目录:

  • float.h: 这个文件定义了用于实现浮点数运算的函数和数据结构。它包含了浮点数的表示方法,以及对浮点数进行加、减、乘、除等操作的函数。

  • float.cpp: 这个文件实现了在ABY库中进行浮点数运算时所需的具体逻辑,并提供了与浮点数相关的通用函数和常量定义。

  • float\_lib: 这个子目录包含了一些用于执行浮点数运算的库函数和工具,例如随机数生成、异常检查、比较等。

这些文件提供了在安全多方计算(SMC)场景下进行浮点数运算的一些基础工具和函数,可以用于在多方计算环境中对敏感数据进行计算和存储。在使用这些工具时,需要注意浮点数的精度问题和一些特殊情况的处理,例如除零操作和无限数字等。因此,这个目录中的代码仅作为了解ABY库的使用方法和功能,建议用户在实际开发时仔细考虑数据精度和异常处理等问题。
5. ABY 中的innerproduct文件夹
在ABY库的src/innerproduct目录中,包含了用于计算内积的源代码。具体来说,这个目录中包含了以下文件:

  • innerproduct.h: 这个文件定义了用于计算内积的函数接口、数据结构和常量。

  • innerproduct.cpp: 这个文件实现了计算内积的算法,包括向量的点积、每个向量元素的乘积之和等。

这些文件提供了计算内积的函数,可以用于在安全多方计算(SMC)环境中对输入向量进行加密和保护。例如,在一个SMC算法中,不同参与者拥有各自的输入向量,他们可以分别使用这个函数计算自己的向量内积并进行互相比较,而不需要暴露各自的原始输入向量。这个目录中的代码展示了ABY库的使用方法,帮助用户了解如何在ABY中使用这个函数。
6. ABY 中的lowmc文件夹
在ABY库的src/lowmc目录中,包含了使用LowMC块密码算法进行安全多方计算(SMC)的源代码。LowMC是一种基于置换的块密码算法,它被广泛用于实现密码协议的安全计算。LowMC算法具有轻量级、高效性、安全等特点,是当前被广泛关注的密码保护技术之一。

具体来说,这个目录中包含了以下文件和子目录:

  • lowmc.h: 这个文件定义了用于实现LowMC算法的函数和数据结构,包括对LowMC加解密、初始化、状态切换等操作的函数。

  • lowmc.cpp: 这个文件实现了在ABY库中使用LowMC算法进行安全计算所需的具体逻辑,例如使用置换矩阵进行块加密等操作。

  • correctness: 这个子目录包含了用于验证LowMC加解密算法正确性的脚本和测试数据。

  • performance: 这个子目录包含了对LowMC加解密算法进行基准测试的脚本和结果。可以使用这些脚本来评估ABY库中LowMC算法的性能和吞吐量。

这些文件提供了在ABY库中使用LowMC算法进行安全计算的基础工具和函数,帮助用户实现安全的密码保护和计算功能。在使用这些工具时,需要注意LowMC算法的密钥长度和块大小等参数,以及对输入输出数据的加密和保护。因此,这个目录中的代码仅作为了解ABY库的使用方法和功能,建议用户在实际开发中仔细考虑安全和性能等问题。
7. ABY 中的millionaire_prob文件夹
在ABY库的src/millionaire\_prob目录中,包含了实现百万富翁问题的源代码。百万富翁问题是一种广泛使用的安全多方计算(SMC)问题,具体来说,它模拟了两个富豪比较财产的场景,但又不想公开各自财产的具体值。通过使用安全多方计算的技术,两位参与者可以同时比较自己的财产,而不需要公开各自的具体财产数值。

具体来说,这个目录中包含了以下文件:

  • millionaire\_prob.h: 这个文件定义了用于解决百万富翁问题的函数接口和数据结构。

  • millionaire\_prob.cpp: 这个文件实现了在ABY库中使用SMC技术解决百万富翁问题的具体逻辑,包括参与方的输入、输出、计算逻辑等。

这些文件提供了在ABY库中使用SMC技术解决百万富翁问题的基础工具和函数,可以用于实现一些高度保密的数据比较场景。在使用这些工具时,需要注意各方输入数据的精度和保护,以及结果的正确性和百万富翁问题本身的安全性。因此,这个目录中的代码仅作为了解ABY库的使用方法和功能,建议用户在实际开发中仔细考虑安全和保密等问题。
8. ABY 中的min-euclidean-dist文件夹
在ABY库的src/min-euclidean-dist目录中,包含了使用安全多方计算(SMC)技术计算欧几里得距离的源代码。欧几里得距离是一个经典的测量空间中两点之间距离的度量方式,它在数据分析、机器学习等领域得到广泛应用。在使用欧几里得距离进行计算时,往往需要保护数据的隐私和安全。

具体来说,这个目录中包含了以下文件和子目录:

  • min-euclidean-dist.h: 这个文件定义了计算欧几里得距离所需的函数接口和数据结构,包括输入数据的格式、距离的计算方法等。

  • min-euclidean-dist.cpp: 这个文件实现了在ABY库中使用SMC技术计算欧几里得距离的具体逻辑,包括将输入数据加密、计算距离、进行计算和输出结果等过程。

  • data: 这个子目录包含了用于测试计算欧几里得距离算法的数据文件,包括各个数据点的坐标和真实的距离值。

这些文件提供了在ABY库中使用SMC技术计算欧几里得距离的基础工具和函数,可以用于解决一些需要计算距离的问题,例如相似性分析、聚类等。在使用这些工具时,需要注意输入数据的格式和准确性,以及结果的精度和保密性。因此,这个目录中的代码仅作为了解ABY库的使用方法和功能,建议用户在实际开发中仔细考虑数据特点和计算要求。
9. ABY 中的psi_2D_CH文件夹
在ABY库的src/psi\_2D\_CH目录中,包含了使用安全多方计算(SMC)技术计算二维取值不同的集合之间的交集大小的源代码。这个基本问题在许多领域中都有应用,例如医学、数据分析等,通常需要保护多方数据的隐私和保密性。

具体来说,这个目录中包含了以下文件:

  • psi\_2D\_CH.h: 这个文件定义了用于在安全多方计算中计算二维集合交集大小的函数接口和数据结构。这些函数包括初始化、输入、加密、计算、输出等步骤。

  • psi\_2D\_CH.cpp: 这个文件实现了在ABY库中使用SMC技术计算二维集合交集大小的具体算法,包括计算集合间的哈希函数、使用置换进行比较等逻辑。

这些文件提供了在ABY库中使用SMC技术计算二维集合交集大小的基础工具和函数,可以用于解决一些需要计算集合交集的问题,例如关联性分析、数据匹配等。在使用这些工具时,需要注意输入数据的精度和保护,以及输出结果的正确性和保密性。因此,这个目录中的代码仅作为了解ABY库的使用方法和功能,建议用户在实际开发中仔细考虑数据特点和计算要求。
10. ABY 中的psi_phasing文件夹
在ABY库的src/psi\_phasing目录中,包含了使用安全多方计算(SMC)技术解决相位估计问题的源代码。相位估计是一种广泛应用于通信和信号处理领域的技术,它可以用于测量和分析信号的相位差异,例如进行通信信号的解调和调制等。因此,保护相位估计的安全性和隐私是一项重要的研究。

具体来说,这个目录中包含了以下文件:

  • psi\_phasing.h: 这个文件定义了用于在安全多方计算中解决相位估计问题的函数接口和数据结构,包括初始化、输入、加密、计算、输出等步骤。

  • psi\_phasing.cpp: 这个文件实现了在ABY库中使用SMC技术解决相位估计问题的具体算法,包括计算相位延迟、进行相位差估计、计算解调器输出等逻辑。

这些文件提供了在ABY库中使用SMC技术解决相位估计问题的基础工具和函数,可以用于解决一些需要计算和保护相位估计的问题,例如无线通信、信号处理等。在使用这些工具时,需要注意输入数据的精度和保护,以及输出结果的正确性和保密性。因此,这个目录中的代码仅作为了解ABY库的使用方法和功能,建议用户在实际开发中仔细考虑数据特点和计算要求。
11. ABY 中的psi_scs文件夹
在ABY库的src/psi\_scs目录中,包含了使用安全多方计算(SMC)技术解决相似度计算问题的源代码。相似度计算是一种常见的数据挖掘和机器学习技术,它可以用于衡量不同数据之间的相似性和相关性。在使用相似度计算进行分析时,往往需要保护多方数据的隐私和保密性。

具体来说,这个目录中包含了以下文件和子目录:

还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!

王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。

对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!

【完整版领取方式在文末!!】

93道网络安全面试题

内容实在太多,不一一截图了

黑客学习资源推荐

最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

😝朋友们如果有需要的话,可以联系领取~

1️⃣零基础入门
① 学习路线

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

image

② 路线对应学习视频

同时每个成长路线对应的板块都有配套的视频提供:

image-20231025112050764

2️⃣视频配套工具&国内外网安书籍、文档
① 工具

② 视频

image1

③ 书籍

image2

资源较为敏感,未展示全面,需要的最下面获取

在这里插入图片描述在这里插入图片描述

② 简历模板

在这里插入图片描述

因篇幅有限,资料较为敏感仅展示部分资料,添加上方即可获取👆

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

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

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

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我可以为您提供Douglas-Peucker算法的C++实现代码。以下是一个简单的实现: ```c++ #include <iostream> #include <vector> #include <cmath> using namespace std; // 定义点结构体 struct Point { double x; double y; }; // 计算点到直线的垂直距离 double distance(Point a, Point b, Point c) { double ABx = b.x - a.x; double ABy = b.y - a.y; double numerator = ABx * (a.y - c.y) - ABy * (a.x - c.x); if (numerator < 0) numerator = -numerator; double denominator = sqrt(ABx * ABx + ABy * ABy); return numerator / denominator; } // 实现Douglas-Peucker算法 void douglas_peucker(vector<Point>& points, int startIndex, int endIndex, double epsilon, vector<int>& result) { double dmax = 0; int index = 0; int n = points.size(); for (int i = startIndex + 1; i < endIndex; i++) { double d = distance(points[startIndex], points[endIndex], points[i]); if (d > dmax) { index = i; dmax = d; } } if (dmax > epsilon) { vector<int> res1; vector<int> res2; douglas_peucker(points, startIndex, index, epsilon, res1); douglas_peucker(points, index, endIndex, epsilon, res2); for (int i = 0; i < res1.size() - 1; i++) { result.push_back(res1[i]); } for (int i = 0; i < res2.size(); i++) { result.push_back(res2[i]); } } else { result.push_back(startIndex); result.push_back(endIndex); } } int main() { vector<Point> points = { {1, 1}, {2, 3}, {3, 5}, {4, 4}, {5, 6}, {6, 7}, {7, 8}, {8, 9}, {9, 10}, {10, 10}, }; vector<int> result; douglas_peucker(points, 0, points.size() - 1, 1, result); for (int i = 0; i < result.size(); i++) { cout << points[result[i]].x << ", " << points[result[i]].y << endl; } return 0; } ``` 该实现基于递归,并使用了点到直线的垂直距离计算方法来决定是否压缩该线段。您可以自行调整epsilon参数来控制压缩程度。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值