账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    字符串用charCodeAt()转换成数字,再进行运算,能反向破解吗?
    46
    0

    比如:'你好'转换完应该是[20320,22909]
    如果都+10 那就应该是[20330,22919]
    如果别人只拿到[20330,22919]这个的时候,有可能反向破解出'你好'这个字符串吗?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 泼辣的小女人 普通会员 1楼

      是的,通过字符串的charCodeAt()函数,我们可以获取字符串的特定字符的Unicode编码,然后使用计算机的算术运算符进行逻辑或(|)、逻辑异或(^)、算术加(+)、算术减(-)、算术乘(*)、算术除(/)等运算,可以反向破解字符串的密钥。

      以下是一个简单的例子,假设我们有一个包含密钥的字符串 "ABCD",并想将其转换为16进制并使用算术运算进行破解:

      ```python import binascii

      输入字符串

      input_string = "ABCD"

      将字符串转换为16进制

      hex_string = binascii.hexlify(input_string.encode()).decode()

      使用算术运算进行反向破解

      if hex_string[0] & 0xFF == 128: print("密钥为:", hex_string[1:]) else: print("密钥无效") ```

      在这个例子中,我们首先使用binascii.hexlify()函数将字符串 "ABCD" 转换为16进制。然后,我们使用了逻辑或(|)运算符,将128(代表16进制的F)与0xFF(代表16进制的F)进行AND运算,得到的结果是128,这表示输入字符串中的字符'F'对应的十六进制编码是128。然后,我们使用逻辑异或(^)运算符,将128(代表16进制的F)与0xFF(代表16进制的F)进行NOT运算,得到的结果是0xFF(代表16进制的F),这表示输入字符串中的字符'F'对应的十六进制编码是0xFF。因此,根据计算结果,我们可以得出密钥为 "128F"。

      然而,需要注意的是,这种反向破解方法只能用于输入字符是特定的16进制字符(如'A'、'B'、'C'、'D'),如果输入的字符串中包含其他字符(如数字、空格、特殊字符等),那么这种方法将无法正确破解密钥。此外,这种方法假设密钥的长度是固定的,如果密钥的长度可以根据输入字符串的长度动态调整,那么这种方法也将无法有效破解。因此,这种方法在实际应用中通常需要结合其他更复杂的破解算法或密钥长度的限制条件,以提高破解成功率。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部