密度大于0.9408

题目:

from Crypto.Util.number import *
import random
from Crypto.Cipher import AES
import hashlib
from Crypto.Util.Padding import pad
from secrets import flag

list = []
bag = []
p=random.getrandbits(64)
assert len(bin(p)[2:])==64
for i in range(4):
    t = p
    a=[getPrime(32) for _ in range(64)]
    b=0
    for i in a:
        temp=t%2
        b+=temp*i
        t=t>>1
    list.append(a)
    bag.append(b)
print(f'list={list}')
print(f'bag={bag}')

key = hashlib.sha256(str(p).encode()).digest()
cipher = AES.new(key, AES.MODE_ECB)
flag = pad(flag,16)
ciphertext = cipher.encrypt(flag)
print(f"ciphertext={ciphertext}")

"""
list=[[2826962231, 3385780583, 3492076631, 3387360133, 2955228863, 2289302839, 2243420737, 4129435549, 4249730059, 3553886213, 3506411549, 3658342997, 3701237861, 4279828309, 2791229339, 4234587439, 3870221273, 2989000187, 2638446521, 3589355327, 3480013811, 3581260537, 2347978027, 3160283047, 2416622491, 2349924443, 3505689469, 2641360481, 3832581799, 2977968451, 4014818999, 3989322037, 4129732829, 2339590901, 2342044303, 3001936603, 2280479471, 3957883273, 3883572877, 3337404269, 2665725899, 3705443933, 2588458577, 4003429009, 2251498177, 2781146657, 2654566039, 2426941147, 2266273523, 3210546259, 4225393481, 2304357101, 2707182253, 2552285221, 2337482071, 3096745679, 2391352387, 2437693507, 3004289807, 3857153537, 3278380013, 3953239151, 3486836107, 4053147071], [2241199309, 3658417261, 3032816659, 3069112363, 4279647403, 3244237531, 2683855087, 2980525657, 3519354793, 3290544091, 2939387147, 3669562427, 2985644621, 2961261073, 2403815549, 3737348917, 2672190887, 2363609431, 3342906361, 3298900981, 3874372373, 4287595129, 2154181787, 3475235893, 2223142793, 2871366073, 3443274743, 3162062369, 2260958543, 3814269959, 2429223151, 3363270901, 2623150861, 2424081661, 2533866931, 4087230569, 2937330469, 3846105271, 3805499729, 4188683131, 2804029297, 2707569353, 4099160981, 3491097719, 3917272979, 2888646377, 3277908071, 2892072971, 2817846821, 2453222423, 3023690689, 3533440091, 3737441353, 3941979749, 2903000761, 3845768239, 2986446259, 3630291517, 3494430073, 2199813137, 2199875113, 3794307871, 2249222681, 2797072793], [4263404657, 3176466407, 3364259291, 4201329877, 3092993861, 2771210963, 3662055773, 3124386037, 2719229677, 3049601453, 2441740487, 3404893109, 3327463897, 3742132553, 2833749769, 2661740833, 3676735241, 2612560213, 3863890813, 3792138377, 3317100499, 2967600989, 2256580343, 2471417173, 2855972923, 2335151887, 3942865523, 2521523309, 3183574087, 2956241693, 2969535607, 2867142053, 2792698229, 3058509043, 3359416111, 3375802039, 2859136043, 3453019013, 3817650721, 2357302273, 3522135839, 2997389687, 3344465713, 2223415097, 2327459153, 3383532121, 3960285331, 3287780827, 4227379109, 3679756219, 2501304959, 4184540251, 3918238627, 3253307467, 3543627671, 3975361669, 3910013423, 3283337633, 2796578957, 2724872291, 2876476727, 4095420767, 3011805113, 2620098961], [2844773681, 3852689429, 4187117513, 3608448149, 2782221329, 4100198897, 3705084667, 2753126641, 3477472717, 3202664393, 3422548799, 3078632299, 3685474021, 3707208223, 2626532549, 3444664807, 4207188437, 3422586733, 2573008943, 2992551343, 3465105079, 4260210347, 3108329821, 3488033819, 4092543859, 4184505881, 3742701763, 3957436129, 4275123371, 3307261673, 2871806527, 3307283633, 2813167853, 2319911773, 3454612333, 4199830417, 3309047869, 2506520867, 3260706133, 2969837513, 4056392609, 3819612583, 3520501211, 2949984967, 4234928149, 2690359687, 3052841873, 4196264491, 3493099081, 3774594497, 4283835373, 2753384371, 2215041107, 4054564757, 4074850229, 2936529709, 2399732833, 3078232933, 2922467927, 3832061581, 3871240591, 3526620683, 2304071411, 3679560821]]
bag=[123342809734, 118191282440, 119799979406, 128273451872]
ciphertext=b'\x1d6\xcc}\x07\xfa7G\xbd\x01\xf0P4^Q"\x85\x9f\xac\x98\x8f#\xb2\x12\xf4+\x05`\x80\x1a\xfa !\x9b\xa5\xc7g\xa8b\x89\x93\x1e\xedz\xd2M;\xa2'
"""

解题思路:

  • 我们首先来计算一下每个包的密度情况
import math

def calculate_density(M):
    if all(isinstance(sub_list, list) for sub_list in M):  #检查 M 是否为二维列表
        densities = []
        for sub_list in M:
            len_M = len(sub_list)  #计算子列表的长度
            max_Mi = max(sub_list)  #找到子列表中的最大元素

            density = len_M / math.log2(max_Mi)
            densities.append(density)

        return densities
    else:
        len_M = len(M)  #计算列表的长度
        max_Mi = max(M)  #找到列表中的最大元素

        return len_M / math.log2(max_Mi)

#M_single = []  #单个背包问题
M_multiple = [[2826962231, 3385780583, 3492076631, 3387360133, 2955228863, 2289302839, 2243420737, 4129435549, 4249730059, 3553886213, 3506411549, 3658342997, 3701237861, 4279828309, 2791229339, 4234587439, 3870221273, 2989000187, 2638446521, 3589355327, 3480013811, 3581260537, 2347978027, 3160283047, 2416622491, 2349924443, 3505689469, 2641360481, 3832581799, 2977968451, 4014818999, 3989322037, 4129732829, 2339590901, 2342044303, 3001936603, 2280479471, 3957883273, 3883572877, 3337404269, 2665725899, 3705443933, 2588458577, 4003429009, 2251498177, 2781146657, 2654566039, 2426941147, 2266273523, 3210546259, 4225393481, 2304357101, 2707182253, 2552285221, 2337482071, 3096745679, 2391352387, 2437693507, 3004289807, 3857153537, 3278380013, 3953239151, 3486836107, 4053147071], [2241199309, 3658417261, 3032816659, 3069112363, 4279647403, 3244237531, 2683855087, 2980525657, 3519354793, 3290544091, 2939387147, 3669562427, 2985644621, 2961261073, 2403815549, 3737348917, 2672190887, 2363609431, 3342906361, 3298900981, 3874372373, 4287595129, 2154181787, 3475235893, 2223142793, 2871366073, 3443274743, 3162062369, 2260958543, 3814269959, 2429223151, 3363270901, 2623150861, 2424081661, 2533866931, 4087230569, 2937330469, 3846105271, 3805499729, 4188683131, 2804029297, 2707569353, 4099160981, 3491097719, 3917272979, 2888646377, 3277908071, 2892072971, 2817846821, 2453222423, 3023690689, 3533440091, 3737441353, 3941979749, 2903000761, 3845768239, 2986446259, 3630291517, 3494430073, 2199813137, 2199875113, 3794307871, 2249222681, 2797072793], [4263404657, 3176466407, 3364259291, 4201329877, 3092993861, 2771210963, 3662055773, 3124386037, 2719229677, 3049601453, 2441740487, 3404893109, 3327463897, 3742132553, 2833749769, 2661740833, 3676735241, 2612560213, 3863890813, 3792138377, 3317100499, 2967600989, 2256580343, 2471417173, 2855972923, 2335151887, 3942865523, 2521523309, 3183574087, 2956241693, 2969535607, 2867142053, 2792698229, 3058509043, 3359416111, 3375802039, 2859136043, 3453019013, 3817650721, 2357302273, 3522135839, 2997389687, 3344465713, 2223415097, 2327459153, 3383532121, 3960285331, 3287780827, 4227379109, 3679756219, 2501304959, 4184540251, 3918238627, 3253307467, 3543627671, 3975361669, 3910013423, 3283337633, 2796578957, 2724872291, 2876476727, 4095420767, 3011805113, 2620098961], [2844773681, 3852689429, 4187117513, 3608448149, 2782221329, 4100198897, 3705084667, 2753126641, 3477472717, 3202664393, 3422548799, 3078632299, 3685474021, 3707208223, 2626532549, 3444664807, 4207188437, 3422586733, 2573008943, 2992551343, 3465105079, 4260210347, 3108329821, 3488033819, 4092543859, 4184505881, 3742701763, 3957436129, 4275123371, 3307261673, 2871806527, 3307283633, 2813167853, 2319911773, 3454612333, 4199830417, 3309047869, 2506520867, 3260706133, 2969837513, 4056392609, 3819612583, 3520501211, 2949984967, 4234928149, 2690359687, 3052841873, 4196264491, 3493099081, 3774594497, 4283835373, 2753384371, 2215041107, 4054564757, 4074850229, 2936529709, 2399732833, 3078232933, 2922467927, 3832061581, 3871240591, 3526620683, 2304071411, 3679560821]] # 多个背包问题

#计算单个背包问题的密度
#density_single = calculate_density(M_single)
#print(f"单个背包的密度是: {density_single}")

#计算多个背包问题的密度
densities_multiple = calculate_density(M_multiple)
for i, density in enumerate(densities_multiple):
    print(f"第 {i + 1} 个背包的密度是: {density}")
'''
第 1 个背包的密度是: 2.0003184396847953
第 2 个背包的密度是: 2.000154916077043
第 3 个背包的密度是: 2.000665293245508
第 4 个背包的密度是: 2.000234034092993
'''
  • 我们发现每个背包密度都超过2,远大于0.9408,这样一来常规格解做不了
  • 注意到题目给了四个背包用于同一个明文加密,可以尝试将四个背包构造在一个格内,于是有如下的格:

  • 其中,M<sub>ij</sub>表示第i个背包中第j个物品的权重,S<sub>i</sub>表示第i个背包的目标重量
  • 向量<font style="color:rgb(6, 6, 7);">(x1,x2,…,xn,−1,−1,−1,−1)</font>表示一个可能的解,其中前<font style="color:rgb(6, 6, 7);">n</font>个元素是物品的数量,后四个元素是每个背包的符号<font style="color:rgb(6, 6, 7);">(-1或1)</font>,表示是否选择该背包
  • 通过构造这样的格并应用格约化算法(如LLL算法,BKZ算法),可以找到格中最短的向量

解答:

LLL算法

list=[[2826962231, 3385780583, 3492076631, 3387360133, 2955228863, 2289302839, 2243420737, 4129435549, 4249730059, 3553886213, 3506411549, 3658342997, 3701237861, 4279828309, 2791229339, 4234587439, 3870221273, 2989000187, 2638446521, 3589355327, 3480013811, 3581260537, 2347978027, 3160283047, 2416622491, 2349924443, 3505689469, 2641360481, 3832581799, 2977968451, 4014818999, 3989322037, 4129732829, 2339590901, 2342044303, 3001936603, 2280479471, 3957883273, 3883572877, 3337404269, 2665725899, 3705443933, 2588458577, 4003429009, 2251498177, 2781146657, 2654566039, 2426941147, 2266273523, 3210546259, 4225393481, 2304357101, 2707182253, 2552285221, 2337482071, 3096745679, 2391352387, 2437693507, 3004289807, 3857153537, 3278380013, 3953239151, 3486836107, 4053147071], [2241199309, 3658417261, 3032816659, 3069112363, 4279647403, 3244237531, 2683855087, 2980525657, 3519354793, 3290544091, 2939387147, 3669562427, 2985644621, 2961261073, 2403815549, 3737348917, 2672190887, 2363609431, 3342906361, 3298900981, 3874372373, 4287595129, 2154181787, 3475235893, 2223142793, 2871366073, 3443274743, 3162062369, 2260958543, 3814269959, 2429223151, 3363270901, 2623150861, 2424081661, 2533866931, 4087230569, 2937330469, 3846105271, 3805499729, 4188683131, 2804029297, 2707569353, 4099160981, 3491097719, 3917272979, 2888646377, 3277908071, 2892072971, 2817846821, 2453222423, 3023690689, 3533440091, 3737441353, 3941979749, 2903000761, 3845768239, 2986446259, 3630291517, 3494430073, 2199813137, 2199875113, 3794307871, 2249222681, 2797072793], [4263404657, 3176466407, 3364259291, 4201329877, 3092993861, 2771210963, 3662055773, 3124386037, 2719229677, 3049601453, 2441740487, 3404893109, 3327463897, 3742132553, 2833749769, 2661740833, 3676735241, 2612560213, 3863890813, 3792138377, 3317100499, 2967600989, 2256580343, 2471417173, 2855972923, 2335151887, 3942865523, 2521523309, 3183574087, 2956241693, 2969535607, 2867142053, 2792698229, 3058509043, 3359416111, 3375802039, 2859136043, 3453019013, 3817650721, 2357302273, 3522135839, 2997389687, 3344465713, 2223415097, 2327459153, 3383532121, 3960285331, 3287780827, 4227379109, 3679756219, 2501304959, 4184540251, 3918238627, 3253307467, 3543627671, 3975361669, 3910013423, 3283337633, 2796578957, 2724872291, 2876476727, 4095420767, 3011805113, 2620098961], [2844773681, 3852689429, 4187117513, 3608448149, 2782221329, 4100198897, 3705084667, 2753126641, 3477472717, 3202664393, 3422548799, 3078632299, 3685474021, 3707208223, 2626532549, 3444664807, 4207188437, 3422586733, 2573008943, 2992551343, 3465105079, 4260210347, 3108329821, 3488033819, 4092543859, 4184505881, 3742701763, 3957436129, 4275123371, 3307261673, 2871806527, 3307283633, 2813167853, 2319911773, 3454612333, 4199830417, 3309047869, 2506520867, 3260706133, 2969837513, 4056392609, 3819612583, 3520501211, 2949984967, 4234928149, 2690359687, 3052841873, 4196264491, 3493099081, 3774594497, 4283835373, 2753384371, 2215041107, 4054564757, 4074850229, 2936529709, 2399732833, 3078232933, 2922467927, 3832061581, 3871240591, 3526620683, 2304071411, 3679560821]]
bag=[123342809734, 118191282440, 119799979406, 128273451872]

L = matrix(ZZ,65,68)
t = 2^10
for i in range(64):
    L[i,i]=2
    L[i,64]=list[0][i]*t
    L[i,65]=list[1][i]*t
    L[i,66]=list[2][i]*t
    L[i,67]=list[3][i]*t
    L[64,i]=1
L[64,64]=bag[0]*t
L[64,65]=bag[1]*t
L[64,66]=bag[2]*t
L[64,67]=bag[3]*t

L=L.LLL()
print(L)

l=[0]*64
for i in range(64):
    if L[0][i]==-1:
        l[i]=1
l=l[::-1]

p=0
for i in range(64):
    p=p*2+l[i]
print(p)
'''
[   -1    -1    -1     1     1    -1    -1    -1    -1    -1     1    -1     1     1    -1     1    -1     1     1    -1     1     1    -1    -1     1    -1    -1     1    -1     1    -1    -1    -1     1    -1     1    -1    -1    -1     1    -1    -1    -1    -1    -1    -1     1     1     1     1     1     1    -1    -1     1     1     1    -1    -1     1    -1    -1    -1    -1     0     0     0     0]
[    4     0     0     2     2     4    -4     4     2    -2     0    -2    -2     8    -8     2     0     2    -2     2    -2     2     0    -2     0     2     0    -6    -2     4     4    -4    -4    -8     0     6     0    -4     2    -2    -6    -2    -2    -4     4     8     4     2    -4     2     0     2     0    -2    -2    -2     0    -2     2     0     0     0     0     0     0     0     0     0]
[   -4     4     0     2    -4     0     4    -6    -4     6     2    -6     0     0     4     0     0    -4     2     0    10     2     0     0     0    -2     2    -2     4     4    -4     2     8     2     8    -4    -4     4    -2     4     0    -2    -6    -2    -2    -6    -2     2    -2    -4    -6    -2     0     2     2     0     0     0     0     0     0     0     0     0     0     0     0     0]
[   -5    -7    -1    -9    -5    -1     1    -1     5     3     1     5     5    -5    -3    -3    -1    -3     5    -3    -5    -1    -1     1    -3     5     1    -1    -1    -5    -1     1    -7     1     1     5     1     1     3     1     5     5     3     1    -7    -1     1    -1     3     1     5     3     1    -3     1     1     1    -1    -1     1    -1    -1    -1    -1     0     0     0     0]
[    7     1    -3     3     1    -3     3    -5    -1     1     1    -1    -5    11    -3     7     3     3   -11     1    -7    -1    -3    -1    -5    -1     1     1    -1    -1    -3     3    -5    -1    -1     7     1     1     1     1    -1    -1    -3     1     5     9     1     1    -1     1     1    -1     1    -1    -3    -1    -1     1     1    -1     1     1     1     1     0     0     0     0]
[   -2     2     6    -2    -6    -4     0    -2    -8    12     4    -2     2    -2     4    -6     2    -2    -8     0    -4    -2    -2     2    -2     4     2    -2     0     2    -2    -2    -4     4     6     8     2     4     8     8   -10     2    -4    -2    -4     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0]
[    7     3    -9     7    -5     3     1    -3     1    -1    -3     1    -5     5   -17     9    -3     3    -3     3     1     5     1    -1     1    -5     1     3     3     3     3     1     3     1    -3    -7    -1     3     1    -5    -3    -1    -1    -3     9     3    -1     3    -1    -1    -1    -1     1     1    -1    -1    -1     1     1    -1     1     1     1     1     0     0     0     0]
[    2     0    -4     2    -8     2     0     2     4     0    -2    -2     8    -4    -4     0    -2    -8     2    -6    12    10     6    -6     0    -2     6     0    -4     0     0     4     6     6     4    -4    -4    -4    -4     2     0     4    -2    -2     0    -2     0     2     2    -6    -4     0     0     0     0    -2     0    -2     2     0     0     0     0     0     0     0     0     0]
[    8    -6    -2     6     4     0   -10     6     4    -4     0     4    -2     4    -4     6    -8    -6     0    -2     0     0     4    -4     2     4     2    -2    -4    -8     0     4    -2    -2     2    -4    -2    -8    -4     0     6     6     4     0     6     0     2     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0]
[    8     0    -2    -6    -6    10     2     0     2     0     2     2     4     0    -6     0     2    -4     0    -2    -2     4     2    -2     0     0     2     4    -2     0     2     6    -2     2    -8     0     6    -4     6    -2   -14     0    -2    -2    -2     0     4     4    -2    -2    -2     2     2    -2     0    -2     0    -2     2     0     0     0     0     0     0     0     0     0]
[   -4     8     8     4     4    -2    -2     0     2     0    -4     2    -4    -2     0    -6     4     6     0     4    -2    -8     0    -2     0     0    -8     0    -2     4    10   -12     0     0    -8     4     0     0    -2    -4    -6     2     6     2     6     0     0    -8     4     6     2     0    -4     2    -2     2     0     2    -2     0     0     0     0     0     0     0     0     0]
[   -1     3    -3     3    -9    -7    -1     5     1    -1    -1    -1     5    -1    -5    -5    -7     3     1    -1    -5     9     3    -1     5    -9     7     7    -1    -3    -3     3     1     5     1    -3     1     3     1     5     5     3     1    -1     3     5    -3    -1     3    -3    -1    -3    -1     1    -3    -1    -1     1     1    -1     1     1     1     1     0     0     0     0]
[   -4    -2     0     4     0    -4     6    -6     4     0     2     4     0    -8     2    -2     6     2    -2     0     4    -4     4     4     2    -2    -6     2     4     4     0   -12    -4    12    -6    -2    -2    10    -2    -2    -4    -2     2     2     0    -2    -4    -2     2     2     4    -2     0     0     0     0     2     0     0     0     0     0     0     0     0     0     0     0]
[   -6    -6     0     6     4    -6     4    -6     0     6     0    -6     2     4     8     0     2     2     2     2     2    -4     8     4    -2     2     0    -6     0     2    -6     0     0     0     2     0     0     2    -6     4     2     0    -4     0     0     0    -2     2    -6     0    -4    -4     2     0     2     0     2     0     0     0     0     0     0     0     0     0     0     0]
[   -2     4    -2     4     0     2     6    -6    -2     6    -6     4    -4     4     0    -2     2     6    -2     2     0     0    -4     0     2    -8     0     2     2     4    -2     4     6     0    -6     2     0     0     2    -4     0    -4     2     0     0    -4    -4    -4    -4     2    -4    -2    -4     4     2     2     0     2    -2     0     0     0     0     0     0     0     0     0]
[   -6     2    -4    -2     2     0     0     6     0   -12     4    -6    -2     2     4     0     4     4     4    -2     6     2     0    -6     2    -4     2     0    -2     4     0     0     6   -10     6    -2     0     4    -6     0     8    -4     0     0    -2    -2     2     6     2    -4    -2     2     2    -2    -2    -2    -2    -2     2     0     0     0     0     0     0     0     0     0]
[   -8     0     2     4     6    -8    -4     0    -2    -2    -2     0     4    -8    10    -4     8     8    -2    -6     2    -4     6     0     4    -4    -6     0    -8     0     8    -8     0    10    -4    -4     6    -2     0     2    -2     6     6     2     2    -2    -2    -4     6     2     0    -4    -2     2     0     2     2     2    -2     0     0     0     0     0     0     0     0     0]
[    4     6    10     2     6     2    -4     0    -4     4     4     0     0    -2     8     0     4   -14    -6     4     2    -4     4    -4    -2     2     0     2    -2     2     2    -8     2    -2     4     4    -2    -2    -4     0    -6     0    -4     2     0    -4     0     0     2    -2    -2     2     0     0    -2    -2    -2    -2     2     0     0     0     0     0     0     0     0     0]
[    0     6    -4    -4    -2     0    -2    -4   -16    10     4    -4     0    -4     0     0    -4    -2     4     4    -4     0     0     6     4    -6     4     6     0    -2    -2     6     4     2     6    -8     4     0     6     8    -2     8    -8    -2    -2    -4     0     2    -2    -2    -2    -4     2     2     4     0     0     0    -2     0     0     0     0     0     0     0     0     0]
[    1    -3     5    -1    -1     3    -3    -3     5     5    -5     7     5    -1    -9     3    -1    -1    -3     5    -5    -1    -3    -1    -1     3    -1    -5    -1     1     3    -5    -5     1    -3     5    -1    -3    -1    -3     3     1     1    -1     3    -1    -3    -3     3     1     1     7    -1    -3    -3     3    -1    -3     1     1    -1    -1    -1    -1     0     0     0     0]
[   -3    -5    -3    -3    -3     3    -1     5     7    -9    -5     1    -3     1    -3    -3     5     1     5    -7     7     9    -3    -7    -1    -1    -1    -5    -7     1     7     1     3    -5    -5     3     3    -3    -1    -9     1     3     7     1     1     1     3    -3     5     1     1     1    -5     1     1     1     1     3    -3     1    -1    -1    -1    -1     0     0     0     0]
[   -6    -2    -6    -2    -2    -2     4   -10     2     8    -6     4     4    -4    -6    10     0     0    -2    -2    -6    -2     2     4    -6     4     2     2     4    -4     0     2     2     6    -2     2     0     0    -2    -4     6     2     0     0    -2    -2    -4     0     6     0     2     2     8    -4    -2     4     0     0    -2     0     0     0     0     0     0     0     0     0]
[   -4     0     6    -2     0    -4     0    10     2    -2     4     6     6    -6     6   -10    -6    -2     4    -2     0     2     4    -2     0     0     2     0    -4    -4    -4    -2    -6    -4     4     6    -2    -2     6     2     4     0     4     0    -8     4    -4    -4     2     4     4     0    -4     0     0    -6     0    -2     4     0     0     0     0     0     0     0     0     0]
[   -5     1     5    -3    -3     9     5    -3     1     3     3    -1    -1    -5    -7    -1     1    -5     5    -3     3    -3    -1     3    -1     5    -3    -3     3     3     7    -5    -5     3    -3     3     1     5     7    -3   -17    -3    -3    -3    -3     1     1    -1     3     5     1     1    -1    -5     3    -3     1    -1     1     1    -1     1    -1    -1     0     0     0     0]
[   -3    -5    -5     1    -1    -3    -1    -3     5     1    -5     5    -3    -1     1     1    -3     3     3     1     7    -5     1    -7     1     3    -1    -9     1     1    -3     1     1    -1     3    -1    -3     3    -7    -1    11     5     5     1     3    -9    -3    -3    -3     1     3     3     3     1     5     1    -1    -1    -3    -1     1    -1    -1    -1     0     0     0     0]
[   -2     6     8    -6     2     4    -4    -2     0     0     2    -2    -2     4    -2     4     0    -2     2     6    -4    -6    -4     2   -10     4    -4     0     4     0     0    -6     4   -10     4     6     0    -4     2    -2     2    -2     0    -4    -2     4     2    -2     4     2     2     4     0     0    -4     0    -2    -2     2    -2     0     0     2     0     0     0     0     0]
[    5    -3    -5     3    -3    -1     7    -3     5    -5    -5     1     1     3    -7     3     1     1    -3    -1     5     9    -1     5    -5    -1     3     3     1    -1     3     1    -3    -1     1    -3     1     5     3    -7    -3    -5    -1     3     1     7    -5     5     1    -1    -1    -1    -3    -1    -3    -5     1     3     3     1    -1     1    -1     1     0     0     0     0]
[   -4    -2    -2    -2    -2     2     0     0     4     2     4     2     4     0    -8     2    -4     0     8    -4    -8     4     2     0     6    -4     0     2     4     0    -4     4     4     0    -4    -2     4     0     6    -4     0    -2     2    -8    -2     0    -2     6    -2     0    -2     2     4    -2    -2    -2     0    -4     4    -2     0     0     2     0     0     0     0     0]
[   -9    -5     1    -1    -5    -7    -3     5    -1     3    -3    -5     3    -5     1    -5    -5     1     7    -3    -1     1     3    -1     5     3     1    -1    -1    -1     5    -1     1     5     1    -1     1     1     3     7     5     1     5    -1    -3    -5    -3    -5     5     1    -3    -1    -5     3     3     3     1     1    -1     1    -1    -1    -1    -1     0     0     0     0]
[    2    -4    -2     0    -8     6    -2     2    -2     6     2    -2     8    -6     0     2    -6    -6     0     0     2     2     8     4     0     6     4     2     4    -6    -2     4    -4     6     4    -2     2     2    10     2    -8    -4    -2    -4    -4     0    -4     2     0    -2    -4    -2     0    -2     0    -2     2    -2     4     0    -2     0     0     0     0     0     0     0]
[   -7     7     5    -7    -7    -3     3    -3     3     1    -3     5    -1    -3     3    -7     3     1    -3    -5     3    -1    -7    -5    -1    -1     3    -3    -1    -3    -3     3     3     1     3     7     1     3     1     3    -3     3     3    -1    -3    -3     1    -5     3     3    -1     3    -3     1     1     1    -1     3    -5    -1     1     1    -1    -1     0     0     0     0]
[   -2    -4    -2    -4     6     2    -6     2     2    -4     4     0     4     2     4     2    -4     2     4     4     0    -4     4     6     4    10    -6    -8     4     0     4    -6    -8    -4     0    -2     6     0     8    -6    -6    -2     2    -6    -2    -2     0     2    -2     2     4     0     4    -2     0    -2     4    -2     2     0    -2    -2     0     0     0     0     0     0]
[   -3     3     1     1    -9    -3     5    -5     3     1     9    -1    -1     7     3    -5     1    -3    -1    -3     3     1    -3    -1    -3    -1    -1     3    -1    -3    -3     1     1     5     3    -1     7     3     1     7    -5     7    -3    -3     1    -3     5    -1     1    -5    -1    -3     3    -1    -1    -1     1     1    -1    -1     1     1     1     1     0     0     0     0]
[    7     1     7    -5    -3     1    -3     1    -7     3     7    -3    -5     7    -5     1    -5    -1     1     5    -5    -7    -5    -9    -3     5    -3     3    -3    -1     1     1    -3    -3    -1     3     3    -3     1     7    -7     7    -1    -1     5     1     5    -1    -3     1    -1     5     1     1     1    -1    -3    -3    -1    -1     3     1    -1    -1     0     0     0     0]
[    0    -2    -4    -6    -4     0     8    -6     4     4     6     4    -6     0     2    -2     4    -2     2    -6    -4    -4    -4     2    -4     2    -2     0     2    -6    -6     6     0     4   -12     4     2     0     0     0     4     6     4     4    -6    -4     4    -2     2     2     4     0     0     0     2     4     2     2     0     0    -2    -2     0     0     0     0     0     0]
[    2    -2     2     4     4    -2     8    -6     2    -2     6    -4     0     4     0     8     8    -6     0     6     0    -4     2    -6     0    -2    -4     2    -4     0    -4     4    -2     2    -4     0    -4     4   -10    -2     0    -2     0     4     6     0    -4     2     4    -2    -4     0    -4     0    -4     0     0    -2     4     0     0     0     2     0     0     0     0     0]
[    5    -1     3    -7    -3    -1    -1    -3    -1     3     7     1     3     1     5    -1    -3   -13     3     1    -9     1    -3    -1    -3     3     1     5    -3    -7    -1     3    -3     3    -5     3     1    -3    -1     1     3     5     5     5    -5    -5    -1    -1     7    -3     1     1    -3     1    -1     5     1    -1    -1     3    -1    -3    -3    -1     0     0     0     0]
[    1     3    -1     1     1    -1     7    -7     7    -1     5     3    -3     3     9     1     5     1     1     1    -5    -1     5    -1     3    -9    -3     7     1     1    -7     1     5     1   -11     3     1     3    -1    -3    -1    -7     3     1    -3    -5    -5     1     1     3    -3    -1    -1     3    -3     1    -1    -1     1    -3     3     1     1     1     0     0     0     0]
[    0    -2     2    -6    -4     4     4    -4    -8     6     0     2     6   -10     2     0     4    -4     0    -4    -6     2     0     4    -2     0     2     4     2    -2     2     4     2    10    -2     2     2     2     2     0   -10     0     0     2    -4     0    -4     0     2     0    -2     0     2     0     0     0     0     0     0     2     0     0     0     0     0     0     0     0]
[   -4     2    -2     6     0     4    -2     2     0     4     0    -4     6     2     0    -6     0     8     0     2     6     4     4     2     4    -6     2    -6     0     8     2    -6     0     2     4     2    -4     0     0     2    -6    -2    -2    -6     0    10    -2    -2    -6     0     0    -6     2     2     0    -4     0    -2     2    -2     4     2     2     2     0     0     0     0]
[    3     1    -5    -7    -7     9     3     3    -5     5    -5    -3     7    -9    -5    -1    -1     1     1    -1     3     3    -3     7    -1     5     3     3     3     3     1     7     5     3    -1     1    -3    -1     5     3    -5    -3    -5    -5    -5    -3     3    -3    -1     1     1     1     3    -3     3    -1    -1    -3     1    -1     1     3     3     1     0     0     0     0]
[  -10     2    -4     2    -2    -2     4     2     6     2    -2     2    -2    -2    -4    -4    -2     6     2    -6    -6    -2     4     0     4   -10     0     0     2     2    -2    -4     4     0     0     4     2     4     0    -2     2     0     4    -2    -2     4     2     0    -6     4     2     0     2     2     2     2    -2    -2    -2    -2     2     2     0     0     0     0     0     0]
[   -3    -1    -5     7    -1    -1    -3    -3     3     3    -1     1    -9     7    -7     1     1     3     1     5    -3    -1    -1    -1     5    -5    -1     1     1     5    -1    -3     3    -3    -3    -1    -3     3    -3    -5     5     1     3    -1     7     1     3    -3    -3     1     7    -3     3     1     1     1     1     1    -3    -5     3     1     3     1     0     0     0     0]
[   -1     3     1    -1     3    -3   -15    11    -9    -1    -3     3    -3    -1    -3    -5    -5     1    -1     3    -9    -3     5     5     3     5     7     1     1     1     1    -7     1   -13     1     1     1    -5     3     3     3     1     1    -1    -3     3     3     1    -1     3     3     3     1     1    -1     1     1     1    -3    -1    -1    -1    -1    -1     0     0     0     0]
[    3     1    -3    -1     3    -1    -3     7     3    -9     1    -5     3     3     1     3    -7   -11     7     3     5     7     3    -3     3     3    -1    -3    -1    -3     1    -3    -1    -7     7    -1     1    -3     1    -1     5    -5    -3    -3     1     5    -1     3    -1    -3    -1    -1    -1    -1    -1    -3    -1    -3     1     1     1    -1    -1    -1     0     0     0     0]
[   -1    -7     7     3     3     1    -5     7    -3     3    -3     1    -1    -3     3    -7    -7     1     3    -1    -5    -5    -1     5     5     7     1    -5     7     7    -5     3     3     3    -1    -3     1    -3     1     3    -1    -5     3    -3    -1    -7    -1     3    -7    -1    -1    -1     3    -3     3     3    -1    -1    -3    -1     1     1     1    -1     0     0     0     0]
[   12     6    -6     0     0     8     2     0     2    -6    -2    -2    -4     2    -6     8     6     0    -8     0     6     4    -2    -8    -6     0     0     6    -4    -2     4     4     6    -4    -2     2     2    -4     0    -4    -6    -4    -2    -2     4     0     2     0     4     0    -4     2    -2    -2    -2    -2    -2    -2     4    -4     0     2     0     2     0     0     0     0]
[    1    -3    -3    -3    -1     3     5     5     7    -3    -1     1     5     5    -7     1    -3     3     3    -3    -1     3     1    -5    -7     1    -1    -1     1    -1    -3     7    -1    -3    -1     7    -3    -1     1    -7     3    -3     5    -1    -1     9     1     1    -3     1     3     3    -1    -1    -1    -5    -1    -3     3     1    -1     1     1    -1     0     0     0     0]
[    0    -2     0     0     4    -2     0     4    -4     2     4    -2     2    -6     8    -6     2     6    -2     0    -6    -6     0     6     6     2     0     2     2    -2    -6     6     2     6    -4    -4     4    -2     0     6    -2    -2     0     0    -2    -2     0     0    -4     0    -4    -2     0     2     2     2     2    -2     2     0    -4     0     2     0     0     0     0     0]
[    3    -3     1     5    -1     1    -1     1    -5     5     5    -3    -5     5     1    -1     1     3   -11     1    -1     1    -1     1     5    -1     5    -3     1     3    -5    -1    -3    -1     5     1     1     3     1     9    -9     1    -9    -1     3     7     3     5    -9    -1    -5    -3     3    -3     1    -1     1     1    -1    -3     3     5     1     1     0     0     0     0]
[    1     1     3     1    -7     3    -9     1     3     3    -1     7     3    -3    -5    -5    -5    -1     5     1     7    -1    -1    -3     3     3    -1     3     1    -5     1    -1    -3     5     3    -3    -3    -5     3     3     1     5     5    -5     1    -7     1    -3    -3    -3    -3     1     1    -1    -1     1    -1    -1    -1     1    -1    -1     1    -1     0     0     0     0]
[    2     2    -2    -6    -4     2     4    -2     6    -6     0    -2    -2     2     0     4     6     4     2    -2     2     4    -6    -2    -4    -2    -2   -10     0     0     2    -2    -2    -8     4     2     0     4     2    -4     4    -4     0     0     4     4     2     6    -4     0     0     4     0     0    -4    -4     0    -2     4     0     0     0     0     0     0     0     0     0]
[    7     3     1    -3    -1     1     5    -3    -7     5     3    -5     7     1     9    -1     5     1    -5    -1     5     5    -5     1     1    -3    -1    -5    -5    -1    -3     7    -1     5    -3     3     1    -3     5     5    -9    -1    -5    -1    -1     3    -1     3    -3     1    -3    -3    -5     1    -1    -3     3    -1     7     1     1     1    -1    -1     0     0     0     0]
[    2     4     2    -4    -2     2     2    -2     0    -4     2    -2     0     4     6    -2     8    -4   -10    -2    -2    -2     0    -6     0    -4     2     2     0     2    -2    -2    -2     4    -2     8    -2     6    -4     2    -8    -2    -2     4     4     4     4    -4     4    -2    -2     0     0    -2    -2     0    -2     4     0     0     4     0     0     0     0     0     0     0]
[   -5    -3    -1     3     9    -3    -1    -1    -1    -3     1     1     1     1     1     9    -5    -3     3     7    -1    -7     7     3    -1     7    -3     1     3    -3    -3    -3     1    -3    -1    -9    -1     3    -7    -3     7    -7     1    -1    -3    -3    -1     5    -1    -1     1     1     1    -3     5     1     1     1     1     1     1    -1    -3    -1     0     0     0     0]
[    7    -1     3     5     1     3    -5     1    -1    -5     1     3    -9    -1     5    -1    -3     1     1    -1     5    -1     3    -3     5    -1     1    -3    -3    -1    -3     1     3     1    -1    -1     3    -3    -7     1    -5     7     1    -3     7     1    -3    -5    -1     1    -1    -1     1     1    -3    -1     1    -3    -1    -1    -1     1    -1     1     0     0     0     0]
[    4    -2     8     2     4     2    -6     6    -6    -8     2    -4    -6     2     6     0     0    -4     0    -4    10     2    -2    -2     0     4     2    -4     0     2     6     0     4    -4     6    -4     2    -6     2     0    -6    -2     2     0     4    -4     0     0     4    -2    -4     0    -2     0    -4    -2    -2     0     2     2     0     2     0    -2     0     0     0     0]
[    2     4     2    -4     0    -6    -2    -2    -6     0     2     4     2    -4     2     0     0     2     2     0    -6    -4     2    -6     2     4    -4     0    -8    -6     4     6     0     4    -6    -6     4    -2     2     4    -2     8     6     2     2    -8     0    -2     6     2    -2     0    -2     4     0     0    -2     4     0     2     2     2     0     0     0     0     0     0]
[    4     4     0     2     2     2     2     0     0     0     4    -4     0     6     8    -4     6    -8     2    -2     2     2     2    -2    10    -6     4    -2    -2    -2    -4     2     0    -4    -2     0     2    -2     0     2     0     0    -4     4     2    -2    -2     2    -4    -6    -8    -4     0     0    -2    -2     0     0     4    -2    -2     0     2     0     0     0     0     0]
[    1    -1     3    -3    -1    -1     1     3     3     1     3     7    -1    -1     5    -9     1    -1     1     3    -1    -9     7     3    -1     9    -3    -7    -3    -1    -1    -1    -9    -1    -3     9    -1    -5     3     5    -3     1     3    -1    -5    -3     3    -3    -5     5     1    -1    -3     1    -1    -3     5    -1     3    -1    -1    -3     1    -1     0     0     0     0]
[    3    -7    -1    -3     1     3    -3     9    -5     3     3     1     3    -7     1    -3    -1     1     1     1    -7    -3     3     3     5     7     1    -3    -1     1    -1     1    -9    -3    -5     5     1    -3     3    -1    -1     3     1    -1    -3     3    -1    -1    -5     1     1     5     5    -3    -1    -3    -1    -5     5     1    -1     1    -1    -1     0     0     0     0]
[   -5     1     5     7     5    -5    -1    -5    -1    -1     1     1   -11     5     3     3    -1    -7    -3    -1     5    -5    -5     3     1     1    -1    -5     5     1    -3    -5     3     1     7    -1    -3     7    -5    -1     1     1     1    -5     5     1    -1    -5    -1     1     1    -1    -1     3     1    -1     1     1    -5    -1     3    -1    -1    -1 -1024  1024  1024 -1024]
[   -5    -3    -3    -3    -1    -5     1    -3    -5     1     1    -5    -5     3     3     3     7     5     1    -1    -5     1    -3     1    -7     1     3    -3    -3     1    -1     1     1    -5     5     3     1     5    -3     5     7     5    -3     1    -3     3    -1     1     1     1     3    -1     5     1     1     3    -3     3    -3    -1     5     1    -1     1  1024  1024 -1024  1024]
[   -1    -1    -1    -1    -3     3     5     1     3     1     1     5     3     1     1    -7     3     1    -1     3    -9    -5     7     3     1    -3     3     3    -5    -3    -5     3   -13    -3    -7     5     7     3     5     1    -7     3    -1     3    -3     5     1     3    -3     1    -1    -3    -3    -3     1    -3     3    -1     1    -1    -5    -1     1    -1 -1024  1024  1024  1024]
[   -1    -1    -1     3    -1    -3     3    -5     7    -3     1     7     5    -3    -1     1    -1    -3     1     1    -1    -1     3     1    -3    -3     1     9    -3    -7    -7     1    -7     1    -1    -1    -3     3    -5    -1     5    -1    -1     3    -1    -1    -3    -1     5     1     1     1    -1    -3    -1    -3     1     1     1    -1     1     1     1     1     0     0 -2048     0]
'''
#17739748707559623655

BKZ算法

list=[[2826962231, 3385780583, 3492076631, 3387360133, 2955228863, 2289302839, 2243420737, 4129435549, 4249730059, 3553886213, 3506411549, 3658342997, 3701237861, 4279828309, 2791229339, 4234587439, 3870221273, 2989000187, 2638446521, 3589355327, 3480013811, 3581260537, 2347978027, 3160283047, 2416622491, 2349924443, 3505689469, 2641360481, 3832581799, 2977968451, 4014818999, 3989322037, 4129732829, 2339590901, 2342044303, 3001936603, 2280479471, 3957883273, 3883572877, 3337404269, 2665725899, 3705443933, 2588458577, 4003429009, 2251498177, 2781146657, 2654566039, 2426941147, 2266273523, 3210546259, 4225393481, 2304357101, 2707182253, 2552285221, 2337482071, 3096745679, 2391352387, 2437693507, 3004289807, 3857153537, 3278380013, 3953239151, 3486836107, 4053147071], [2241199309, 3658417261, 3032816659, 3069112363, 4279647403, 3244237531, 2683855087, 2980525657, 3519354793, 3290544091, 2939387147, 3669562427, 2985644621, 2961261073, 2403815549, 3737348917, 2672190887, 2363609431, 3342906361, 3298900981, 3874372373, 4287595129, 2154181787, 3475235893, 2223142793, 2871366073, 3443274743, 3162062369, 2260958543, 3814269959, 2429223151, 3363270901, 2623150861, 2424081661, 2533866931, 4087230569, 2937330469, 3846105271, 3805499729, 4188683131, 2804029297, 2707569353, 4099160981, 3491097719, 3917272979, 2888646377, 3277908071, 2892072971, 2817846821, 2453222423, 3023690689, 3533440091, 3737441353, 3941979749, 2903000761, 3845768239, 2986446259, 3630291517, 3494430073, 2199813137, 2199875113, 3794307871, 2249222681, 2797072793], [4263404657, 3176466407, 3364259291, 4201329877, 3092993861, 2771210963, 3662055773, 3124386037, 2719229677, 3049601453, 2441740487, 3404893109, 3327463897, 3742132553, 2833749769, 2661740833, 3676735241, 2612560213, 3863890813, 3792138377, 3317100499, 2967600989, 2256580343, 2471417173, 2855972923, 2335151887, 3942865523, 2521523309, 3183574087, 2956241693, 2969535607, 2867142053, 2792698229, 3058509043, 3359416111, 3375802039, 2859136043, 3453019013, 3817650721, 2357302273, 3522135839, 2997389687, 3344465713, 2223415097, 2327459153, 3383532121, 3960285331, 3287780827, 4227379109, 3679756219, 2501304959, 4184540251, 3918238627, 3253307467, 3543627671, 3975361669, 3910013423, 3283337633, 2796578957, 2724872291, 2876476727, 4095420767, 3011805113, 2620098961], [2844773681, 3852689429, 4187117513, 3608448149, 2782221329, 4100198897, 3705084667, 2753126641, 3477472717, 3202664393, 3422548799, 3078632299, 3685474021, 3707208223, 2626532549, 3444664807, 4207188437, 3422586733, 2573008943, 2992551343, 3465105079, 4260210347, 3108329821, 3488033819, 4092543859, 4184505881, 3742701763, 3957436129, 4275123371, 3307261673, 2871806527, 3307283633, 2813167853, 2319911773, 3454612333, 4199830417, 3309047869, 2506520867, 3260706133, 2969837513, 4056392609, 3819612583, 3520501211, 2949984967, 4234928149, 2690359687, 3052841873, 4196264491, 3493099081, 3774594497, 4283835373, 2753384371, 2215041107, 4054564757, 4074850229, 2936529709, 2399732833, 3078232933, 2922467927, 3832061581, 3871240591, 3526620683, 2304071411, 3679560821]]
bag=[123342809734, 118191282440, 119799979406, 128273451872]

L=Matrix(ZZ,65,68)
for i in range(64):
    L[i,i]=2
    L[i,-1]=list[0][-i-1]
    L[i,-2]=list[1][-i-1]
    L[i,-3]=list[2][-i-1]
    L[i,-4]=list[3][-i-1]
L[-1,:]=1
L[-1,-1]=bag[0]
L[-1,-2]=bag[1]
L[-1,-3]=bag[2]
L[-1,-4]=bag[3]
x=L.BKZ()
print(x[0])
p=''
for i in x[0][:64]:
    if i==x[0][0]:
        p+='1'
    else:
        p+='0'
p=int(p,2)
print(p)
'''
(1, 1, 1, 1, -1, 1, 1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, 1, 1, 1, 1, 1, 1, -1, 1, 1, 1, -1, 1, -1, 1, 1, 1, -1, 1, -1, 1, 1, -1, 1, 1, -1, -1, 1, -1, -1, 1, -1, 1, -1, -1, 1, -1, 1, 1, 1, 1, 1, -1, -1, 1, 1, 1, 0, 0, 0, 0)
17739748707559623655
'''
from Crypto.Cipher import AES
import hashlib
from Crypto.Util.Padding import unpad

x = 17739748707559623655
ciphertext=b'\x1d6\xcc}\x07\xfa7G\xbd\x01\xf0P4^Q"\x85\x9f\xac\x98\x8f#\xb2\x12\xf4+\x05`\x80\x1a\xfa !\x9b\xa5\xc7g\xa8b\x89\x93\x1e\xedz\xd2M;\xa2'
key = hashlib.sha256(str(x).encode()).digest()
Cipher = AES.new(key, AES.MODE_ECB)
padded_message = Cipher.decrypt(ciphertext)
message = unpad(padded_message, AES.block_size)
print(message)
#hgame{A_S1mple_Modul@r_Subset_Sum_Problem}
posted @ 2025-03-12 00:08  sevensnight  阅读(13)  评论(0)    收藏  举报