-

@ baf2b8a4:c19b3a3b
2025-02-19 16:03:34
i revised this task to reverse sha256 hash for direct copy-pasting to llm.
//
do you think its possible to solve below task with better than brute force efficiency?
write reverse algorithm to produce message_schedule (unknown) given values of a...h. below are 3 examples of values for a..h and their corresponding values for message_schedule.
example 1:
a 2554067021
b 934627148
c 3576864995
d 3787784803
e 3015482348
f 3643477531
g 1296645010
h 2997048461
message_schedule
48656c6c
6f800000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000028
5594884c
6f910000
d53ac55a
a01bde7a
3a337e8b
94da02f9
d09a76a8
969b56c2
e54654c3
96d784a5
80dcbe18
6d174adb
5dc96a53
1cc815a3
7f1a0dce
9db3e25f
80da5dc2
9c0ca81e
bea91b8b
8da1af1a
66a32861
cc59ddf4
a1c28a29
fb405db4
4eaacb84
896ee197
b4ed8def
782c4a4a
e252b57c
7b6c0231
da9ee233
700956f3
bc709c4d
1900a949
e3bfb13b
b581cf14
980047e9
6b30284b
9eef960a
7c902e42
27e9ffc6
2ab47040
b3e8da4f
0f211a94
30dcba1f
8ce0fd92
decd3e41
a5312439
example 2:
a 1456517755
b 2080931197
c 2081916487
d 2910274343
e 2030590959
f 380485005
g 2058341430
h 2838062193
message_schedule
48656c6c
61800000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000028
555884cc
61910000
52eaf626
a01858ba
25c35995
27620219
c7f146b7
969ef4a9
ed4de757
f7cf5447
ef92b130
665a5060
35e790b0
2a16f029
20ec5a59
469bd23a
408882f4
dfe09e2c
81e7649b
2b7a9a86
64fde073
8d43a68d
57908165
4a827bf4
61c1f470
bcae0e11
37db7f95
15392362
7e7dbc66
d84993c5
5de02230
64371d6c
7848d34a
82d8933e
ba8b15d1
981b1cf0
08d54dd5
b8e88750
4a52081d
a81f659c
e1231384
c9027fb2
49d7145a
3a56c1e0
94633317
3ee9ff2d
18e13cd7
b501c9a3
example 3:
a 3298608390
b 1491947901
c 85997119
d 2427822060
e 868523213
f 1035537017
g 2889029287
h 2300527180
message_schedule
48656c6c
6f2c2057
6f726c64
80000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000060
f39373ed
cd91d2df
582a2fcb
53077b0e
520acd9b
52f2223d
3f6a4257
48e1339c
370075a7
17d9c4eb
8772388b
2cf7ed01
ae679216
4a95d075
445b4ec3
a29553f1
acb4ffe7
6efa1362
2d4ba115
dcb969f4
39b8f4b3
6a479fa5
c42c224a
87ba80ae
e1460986
df4b2646
267ef8cf
3aa2df38
5401dd14
a0eab3c4
453f58e4
78c47969
215a3a0f
10b756c7
6a900b18
cee32fb1
800e6ae9
2743cbf5
22ce1449
d92e97ea
1a68ac5e
07ca98ec
f9f38dc3
2f88e8f3
645b5352
43395cfe
a5fbb32e
ae0788d6
//
original algorithm below.
//
a = 0x1
b = 0x1
c = 0x1
d = 0x1
e = 0x1
f = 0x1
g = 0x1
h = 0x1
print("message_schedule")
for s in message_schedule:
print(s.hex())
# Iterate for t=0 to 63
for t in range(hash_len):
t1 = ((h + _capsigma1(e) + _ch(e, f, g) + K[t] +
int.from_bytes(message_schedule[t], 'big')) % 2**32)
t2 = (_capsigma0(a) + _maj(a, b, c)) % 2**32
h = g
g = f
f = e
e = (d + t1) % 2**32
d = c
c = b
b = a
a = (t1 + t2) % 2**32
print("a", a)
print("b", b)
print("c", c)
print("d", d)
print("e", e)
print("f", f)
print("g", g)
print("h", h)