一个蛮奇怪的算法(也许是我看不懂)
本帖最后由 yujian1991 于 2020-5-29 17:34 编辑算法是分析某软件时弄出来的,看了半天没看明白是个什么算法,所以写个小程序给大佬研究研究。PS:易语言写的,无花无壳
大概介绍一下,就是加、解密的时候,算法是一样的,用到的"密钥"不同。我不确定加密后的数据在没有对应解密"密钥"的时候是否可逆,因为这个不是RSA,看起来计算过程很简单
flag是14位
本帖最后由 monvvv 于 2020-5-29 21:17 编辑
逆出算法:
def encode(data, key):
assert len(data) == 14
result = bytearray(14)
for i in range(14):
val = 0
sub_key = key
for j in range(14):
val += data * sub_key
result = val & 0xFF
return result
KEY = [
'01FF000000000000000000000000',
'FF02FF0000000000000000000000',
'00FF02FF00000000000000000000',
'0000FF02FF000000000000000000',
'000000FF02FF0000000000000000',
'00000000FF02FF00000000000000',
'0000000000FF02FF000000000000',
'000000000000FF02FF0000000000',
'00000000000000FF02FF00000000',
'0000000000000000FF02FF000000',
'000000000000000000FF02FF0000',
'00000000000000000000FF02FF00',
'0000000000000000000000FF02FF',
'000000000000000000000000FF02',
]
CIPHER = 'E2321CB10044F4B33A27967A86AC'
显然对于一组c, m, k有(c1, c2, ..., c14) = (m1, m2, ..., m14) * (mod 256)
所以求解m就相当于求解一个多元一次同余方程(可以求出该方程可解。
解得m = = 'Wua1PoJ1e_2o2o'
bingo广东人 不懂算法的人无奈啊。。。
weikun444 发表于 2020-5-29 10:58
不懂算法的人无奈啊。。。
这没任何意义哦 楼主不是我说,这种算法要是换我来啊,我早就看不懂了!{:1_927:} 看着像是hill密码,是要算逆矩阵? monvvv 发表于 2020-5-29 21:12
逆出算法:
def encode(data, key):
assert len(data) == 14
大佬牛B!!! 不懂,帮顶啊啊 {:1_925:} 无语哎 慢慢研究
页:
[1]