我想实现的是波兰字符加密和解密。我所知道的是,通常是“UTF-8”或“窗口-1250”的作品,但问题会更把它放在哪里。
这里是工作示例来自近的问题,但没有具体的文字:
def encode(key, string):
encoded_chars = []
for i in range(len(string)):
key_c = key[i % len(key)]
encoded_c = chr(ord(string[i]) + ord(key_c) % 256)
encoded_chars.append(encoded_c)
encoded_string = ''.join(encoded_chars)
return encoded_string
def decode(key, string):
encoded_chars = []
for i in range(len(string)):
key_c = key[i % len(key)]
encoded_c = chr((ord(string[i]) - ord(key_c) + 256) % 256)
encoded_chars.append(encoded_c)
encoded_string = ''.join(encoded_chars)
return encoded_string
e = encode('MarcelProjectNoName', 'ąężłóćńś')
d = decode('MarcelProjectNoName', e)
print(e)
print(d)
此代码返回:
ŒźǮƥŘųƔǍ
|BóD[
如果你只是寻找一个简单的方法,你的编码字符串,字节,通过串并重点进行遍历时,使用XOR。的优点是相同的功能,可用于加密/解密。需要注意的是.encode()
默认为utf8
:
def encrypt(key, string):
return bytes([b ^ key[i % len(key)] for i,b in enumerate(string)])
decrypt = encrypt
key = 'MarcelProjectNoName'.encode()
e = encrypt(key, 'ąężłóćńś'.encode())
d = decrypt(key, e)
print(e)
print(d.decode())
输出:
b'\x89\xe4\xb6\xfa\xa0\xd0\x95\xf0\xac\xd9\xa1\xe4\xb1\xca\xaa\xd5'
ąężłóćńś
您可以使用内置的str.encode
和bytes.decode
方法,而不是:
s = 'MarcelProjectNoName'
e = s.encode('utf-8')
d = e.decode('utf-8')