574
社区成员
发帖
与我相关
我的任务
分享docker pull secretflow/secretflow-anolis8:latest
docker run -d -ti --net="host" --name=lianxi --shm-size=10.24gb secretflow/secretflow-anolis8:latest bash
docker run -d -ti --net="host" --name=lianxi2 --shm-size=10.24gb secretflow/secretflow-anolis8:latest bash
模拟alice、bob两方
# -*- coding: UTF-8 -*-
"""
@Name: psi.py
@Auth: yaoyf
@Date: 2024/3/25-16:57
@Desc: aa
@Version: 0.1
"""
# system lib
# third lib
import os
import spu
import secretflow as sf
import argparse
# user lib
if __name__ == '__main__':
cluster_config = {
"parties": {
"alice": {
"address": "10.1.251.74:9301", # proxy的ip
"listen_addr": "10.1.251.74:9301",
},
"bob": {
"address": "10.1.251.75:9301", # porxy的ip
"listen_addr": "10.1.251.75:9301",
},
},
"self_party": "alice",
}
spu_config = {
"nodes": [
{"party": "alice", "id": "alice", "address": "10.1.251.75:9302"}, # spu的ip
{"party": "bob", "id": "bob", "address": "10.1.251.75:9302"},
],
"runtime_config": {
"protocol": spu.spu_pb2.SEMI2K,
"field": spu.spu_pb2.FM128,
},
}
sf.init(address="10.1.251.74:9001", # ray集群
cluster_config=cluster_config,
ignore_reinit_error=True,
cross_silo_comm_backend="brpc_link",
cross_silo_comm_options={"connect_retry_times": 60,
"connect_retry_interval_ms": 5000})
alice = sf.PYU("alice")
bob = sf.PYU("bob")
spu = sf.SPU(spu_config,
link_desc={"connect_retry_times": 60,
"connect_retry_interval_ms": 5000})
input_path = {
alice: "/opt/alice.csv",
bob: "/opt/bob.csv",
}
output_path = {
alice: "/opt/alice_psi.csv",
bob: "/opt/bob_psi.csv",
}
select_keys = {
alice: "id",
bob: "id",
}
spu.psi_csv(key=select_keys,
input_path=input_path,
output_path=output_path,
receiver='bob', # 可以哪一方可以获得交集
protocol="ECDH_PSI_2PC",
curve_type="CURVE_FOURQ",
sort=False,
broadcast_result=False,
precheck_input=False)
docker exec -ti lianxi bash
ray start --head --node-ip-address=10.1.251.74 --port=9001 --include-dashboard=True --disable-usage-stats
2方相同的操作,相同的代码,只是连接的ray集群和party换成执行方
在每一方制作一个只有id列的数据集即可。
python3.8 psi.py

alice方


bob方

alice

bob

交集