标签:WeDPR G1 point encrypted bytes 不经意 key message out
WeDPR 1_out_of_2 OT 协议 ,算法实现见:https://github.com/WeBankBlockchain/WeDPR-Lab-Crypto/tree/main/crypto/oblivious_transfer/base_ot
message = [message_0, message_1 ]
步骤一 receiver初始化:
-
生成随机数 a , b
-
计算 c = a * b
-
计算 point_x = a * G1
point_y = b * G1
- 如果选择 message _0 则
point_z = c * G1
否则
point_z = (c -1) * G1
- 最后得到 ReceiverSecret= { b } , ReceiverCommitment = {point_x ,point_y ,point_z }
并将ReceiverCommitment 发送给sender
步骤二 sender加密message:
-
加密 message_0
-
选择r , s
-
计算 key_basepoint_0 = s * point_x + r * G1
-
计算 bytes_key = point_to_bytes ( s * point_z + r * point_y) //point_to_bytes 将点转成byte
-
encrypted_message_0 = message_0 ^ bytes_key
(按位异或,注意bytes_key 的长度要大于message的长度)
-
加密 message_1,重新计算 point_z = point_z + G1
-
选择r , s
-
计算 key_basepoint_1 = s * point_x + r * G1
-
计算 bytes_key = point_to_bytes ( s * point_z + r * point_y)
-
encrypted_message_1 = message_1 ^ bytes_key
最后将{key_basepoint_0 ,encrypted_message_0 } {key_basepoint_1,encrypted_message_1 }发送给 receiver
步骤三 receiver解密:
-
解密message_0
-
计算 :bytes_key =point_to_bytes( b * key_basepoint_0 )
-
解密: message_0= encrypted_message_0 ^ bytes_key
-
解密message_1
-
计算:bytes_key = point_to_bytes( b * key_basepoint_1 )
-
解密: message_1 = encrypted_message_1 ^ bytes_key
标签:WeDPR,G1,point,encrypted,bytes,不经意,key,message,out 来源: https://blog.csdn.net/qq_34793644/article/details/123128959
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。