只有 3 个运算操作的解密函数,破解奖励一杯咖啡

周末写了一个非常简单的解密函数:将参数 x 乘以一个常数,然后高低位置换,重复 n 次。 代码: #include <cstdint> #include <iostream> uint64_t solve(uint64_t x, uint64_t n) { while (n--) { x *= 0x...
只有 3 个运算操作的解密函数,破解奖励一杯咖啡
只有 3 个运算操作的解密函数,破解奖励一杯咖啡

周末写了一个非常简单的解密函数:将参数 x 乘以一个常数,然后高低位置换,重复 n 次。

代码:

#include <cstdint>
#include <iostream>

uint64_t solve(uint64_t x, uint64_t n) {
    while (n--) {
        x *= 0xD1342543DE82EF95;
        x ^= x >> 32;
    }
    return x;
}

int main() {
    uint64_t result = solve(11451419260817, 1e14);
    std::cout << "x" << result % 100000 << "\n";
    return 0;
}

结果是支付宝口令红包,最先破解者奖赏一杯咖啡☕️。(明天 11 点过期)

⚠️ 上述代码大约需运行一天时间( 5GHz ),暴力运算大概率会超时,因此需要一些数学技巧来优化。如果能找到优化方案,我再发一个新的测试~

来源: V2EX - 技术查看原文