用波兰语字符加密字符串的简单方法

时间:2019-02-05 22:26:43

标签: python python-3.x windows encryption

我要实现的是波兰语字符的加密和解密。我所知道的是通常“ UTF-8”或“ windows-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[

2 个答案:

答案 0 :(得分: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 :(得分:-1)

您可以改用内置的str.encodebytes.decode方法:

s = 'MarcelProjectNoName'
e = s.encode('utf-8')
d = e.decode('utf-8')