You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何反转含移位、异或及密钥的加密算法以还原任意长度原始消息?

问题描述

我需要编写一个程序,用于反转msg ^ ((msg << shift) & key)算法,还原出原始消息,且程序需支持任意长度的消息。设定的前提条件如下:

  • 二进制密钥长度大于移位值shift
  • 消息长度不小于密钥长度(代码中会包含密钥长度小于shift的判断,但该场景无需重点关注,仅为保证程序完整性添加)
已实现的部分

我已经实现了密钥为0xffffffff且采用右移操作时的解码功能,代码如下:

def decode(value,shift):
    binary = format(value,'b')
    valueLen = len(binary) - shift
    y = value
    if valueLen < 0:
        return value
    else:
        for i in range(valueLen):
            y = value ^ y << shift
        y = y >> (shift*valueLen) 
        return y

这段代码利用(a ^ b) ^ (b ^ c) = a ^ c的特性,通过多次移位后异或来还原消息,最后去除冗余位。

遇到的问题

但加入密钥key后,我完全无从下手,希望能得到编程实现的思路指引。

参考加密算法

附上完整的加密算法供参考:

msg = msg ^ (msg >> 6)
msg = msg ^ ((msg << 13) & 275128763)
msg = msg ^ ((msg << 20) & 2186268085)
msg = msg ^ (msg >> 14)

内容的提问来源于stack exchange,提问作者Popular Power

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 16:55:00