Cryptohack_Real Eisenstein

把根号*16**64取整后,可以规约到格,求短向量就可以了。

我的sage脚本的数据提前处理了一下,去掉了crypto{以及}

from gmpy2 import *
from Crypto.Util.number import *

from itertools import combinations
cc=964800971292550133986768943063924727304808312101978309771196265087959007148539336
R=[504726015446904960597466361189335679049365693676568789590649782191980985338163, 555319351714560486997693229476847409616797607510749070227777218321341718792366, 623559483905373149515509962250334007593176988140672293386861335566839954917150, 644703067953162845879772559061483550753693097016543756353329517099133036021239, 704335781717694712125631187492179731282257170391794589794041000346879141987140, 741431133098446629481394657101749116579352597604130395244498044756368469200502, 759299506774192284725593764046394980842154792271002266041485541287785322641200, 793830569269855003912779183853090381156849757419472118635599251472478775537437, 842979133957037898802592178257649218495167876777753106132870674282723226347073, 889415913882033723572969165762018437886007560657647493034392953158501830160671, 904365127438303219691655476946804588766681032264532016460823676501908677840975, 947799098599568201589477375996907474098641282706695521449518886924485976636994, 975681486462628537493705507890025798931312641632626480749417872731014314946378, 989328044121771364773965489443920283750666415524104088644345724636123822106925, 1029182601128422288519554796996447702411952273721253394599730955331933481506758]

 
n=len(R)
M=Matrix(ZZ,n+1,n+1)
for i in range(n):
    M[i,i]=1
for i in range(n):
    M[i,n]=R[i]
M[n,n]=cc
print(M[1])
print(M[n])

res=M.BKZ()
strxx=""
for kk in range(n):
    strxx+=chr(abs(res[0][kk]))
    print(strxx)
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值