简单的方法来加密与波兰字符的字符串

问题描述 投票:2回答:2

我想实现的是波兰字符加密和解密。我所知道的是,通常是“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[
python python-3.x windows encryption
2个回答
1
投票

如果你只是寻找一个简单的方法,你的编码字符串,字节,通过串并重点进行遍历时,使用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'
ąężłóćńś

-1
投票

您可以使用内置的str.encodebytes.decode方法,而不是:

s = 'MarcelProjectNoName'
e = s.encode('utf-8')
d = e.decode('utf-8')
© www.soinside.com 2019 - 2024. All rights reserved.