当前位置:首页>开发>正文

如何将字符串异或python Python字节,每字节的异或解密问题,怎么解决

2023-04-29 04:18:07 互联网 未知 开发

 如何将字符串异或python Python字节,每字节的异或解密问题,怎么解决

如何将字符串异或python

from random import seed,randint

str_in=input(请输入一个字符串:)
you_seed=input(请输入密码:)
you_seed=int(you_seed)

#lock
def my_lock(lock_str,lock_seed):
seed(lock_seed)
li_out=[]
for i in lock_str:
li_out.append(chr(ord(i)^randint(0,65535)))
return .join(li_out)
my_lock_str=my_lock(str_in,you_seed)
print(原字符串:,str_in)
print(加密字符串:,my_lock_str)
print(还原后字符串:,my_lock(my_lock_str,you_seed))
input()
#python 3.4

Python字节,每字节的异或解密问题,怎么解决

1.先将int转为hex字符串,去掉0x,然后对位数判断,比如1 --> 0x01(而不是0x1), 22 --> 0x16;

2.直接将字符串转为bytearray,比如0x123456 --> 0x12x34x56(忽略转义表示,此处只是讨论使用方法)

3.直接将bytearray转为bytes

def hexPos(num):
    val = hex(int(num))[2:]
    if len(val) % 2 != 0:
        val = 0   val
    y = bytearray.fromhex(val)
    if len(y) != 4:
        x = bytearray(4 - len(y))
    return bytes(x   y)

java中字符串异或的原理

异或运算有两个特性:
1、一个数异或本身恒等于0,如5^5恒等于0;
2、一个数异或0恒等于本身,如5^0恒等于5。

所以java中下面式子就是用异或来实现交换:
算式一:a=b^(a^a)=a^(a^b)
算式二:b=a^(b^b)^(a^a)=a^(a^b)^(a^b)

python中字符串显示为乱码怎么办

显示乱码的主要原因是:字符串编码集问题

  其原因详细:
Windows 下的字符串编码集为GBK 而我们的Python字符串一般是 UTF-8
  代码详情:
#!/usr/bin/python
# coding: utf-
os_char=gb18030 # 定义转换类型为GB18030

print u"我是字符串" # 直接打印Unicode
print u"我是字符串".encode(os_char) # 转换为GB18030编码
print "我是字符串".decode("utf-8").encode(os_char) # 先转换为UTF-8 再转换为GB18030  备注:
1.         之前的第一行(#!) 为Linux环境下的执行文件声明 如 Bash 的声明为 #!/bin/bash
2.   第二行注明编码集为GB18030
3.       Linux下的编码集为 UTF-8