网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月20日
漏签
0
天
python吧
关注:
470,510
贴子:
1,955,290
看贴
图片
吧主推荐
视频
游戏
3
回复贴,共
1
页
<<返回python吧
>0< 加载中...
求大佬解答一下,这些报错怎么解决,charm库我安装不上
只看楼主
收藏
回复
清秋重返巅峰
白丁
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
求大佬解答一下,这些报错怎么解决,charm库我安装不上
清秋重返巅峰
白丁
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
完整代码在此,谁能帮我试运行一下
清秋重返巅峰
白丁
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
#coding=utf-8
from charm.toolbox.pairinggroup import PairingGroup, ZR, G1, G2, GT, pair
import hashlib
Hash1pre = hashlib.md5
def Hash1(w):
# 先对关键词w进行md5哈希
hv = Hash1pre(str(w).encode('utf8')).hexdigest()
print(hv)
# 再对md5值进行group.hash哈希,生成对应密文
# 完整的Hash1由md5和group.hash组成
hv = group.hash(hv, type=G1)
return hv
Hash2 = hashlib.sha256
def Setup(param_id='SS512'):
# 代码符号G1 x G2 → GT
group = PairingGroup(param_id)
# 方案选用的是对称双线性对,故G2 = G1
g = group.random(G1)
alpha = group.random(ZR)
# 生成私钥与公钥并进行序列化
# Serialize a pairing object into bytes
sk = group.serialize(alpha)
pk = [group.serialize(g), group.serialize(g ** alpha)]
return [sk, pk]
def Enc(pk, w, param_id='SS512'):
group = PairingGroup(param_id)
# 进行反序列化
g, h = group.deserialize(pk[0]), group.deserialize(pk[1])
r = group.random(ZR)
t = pair(Hash1(w), h ** r)
c1 = g ** r
c2 = t
# 对密文进行序列化
print(group.serialize(c2))
return [group.serialize(c1), Hash2(group.serialize(c2)).hexdigest()]
def TdGen(sk, w, param_id='SS512'):
group = PairingGroup(param_id)
sk = group.deserialize(sk)
td = Hash1(w) ** sk
# 对陷门进行序列化
return group.serialize(td)
def Test(td, c, param_id='SS512'):
group = PairingGroup(param_id)
c1 = group.deserialize(c[0])
c2 = c[1]
print(c2)
td = group.deserialize(td)
return Hash2(group.serialize(pair(td, c1))).hexdigest() == c2
if __name__ == '__main__':
# 'SS512'是对称双线性对
param_id = 'SS512'
[sk, pk] = Setup(param_id)
group = PairingGroup(param_id)
c = Enc(pk, "yes")
td = TdGen(sk, "yes")
assert(Test(td, c))
td = TdGen(sk, "no")
assert(not Test(td, c))
c = Enc(pk, "Su*re")
assert(not Test(td, c))
c = Enc(pk, "no")
assert(Test(td, c))
c = Enc(pk, 9 ** 100)
td = TdGen(sk, 9 ** 100)
assert(Test(td, c))
td = TdGen(sk, 9 ** 100 + 1)
assert(not Test(td, c))
司马刚呐
白丁
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
你直接去GitHub上下载源码安装(用linux会更好一点,然后Python版本不要高于3.8)
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示