首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅Python加密/模糊处理

仅Python加密/模糊处理
EN

Stack Overflow用户
提问于 2021-08-10 10:59:54
回答 1查看 96关注 0票数 0

我正在寻找简单的基于密码的字符串混淆/安全性。我几乎看过了> Simple way to encode a string according to a password?的每个示例,但它们都不适用于我的Python3.7。我得到了ord()的错误,所以我更新了代码,但即使在更新之后,它仍然是坏的。例如:

代码语言:javascript
复制
from itertools import cycle

def encode_zip_cycle(key, clear):
    enc = [chr((ord(clear_char) + ord(key_char)) % 256)
           for clear_char, key_char in zip(clear, cycle(key))]
    return base64.urlsafe_b64encode("".join(enc).encode())

def decode_zip_cycle(key, enc):
    enc = base64.urlsafe_b64decode(enc)
    dec = [chr((256 + enc_char - ord(key_char)) % 256)
           for enc_char, key_char in zip(enc, cycle(key))]
    print(dec)
    return "".join(dec)

text = "ATTACKATONCEfor Live   2154125-21-512^!££613-123!"
s = "1235348udgfjff"
print("Text  : " + text)
print("Shift : " + str(s))
print("Cipher: ", encode_zip_cycle(s, text))  # , type(encode(s, text)))
print("Original text: ", decode_zip_cycle(s, encode_zip_cycle(s, text)))

给了我

代码语言:javascript
复制
Text  : ATTACKATONCEfor Live   2154125-21-512^!££613-123!
Shift : 1235348udgfjff
Cipher:  b'csKGwod2dn95w4nCs8K1wqnCr8OMw5XCo1J_wp7CqcKZWMKVwoTCmcKXwp_CmsKXY2dgZ2RhbcKmwpbDhcKHDQnCnGJlYGZlZ1k='
['A', '\x90', 'S', '\x8d', 'T', 'B', '>', '\n', '\x15', '\\', '#', 'X', 'M', '\\', '\x84', '\x90', 'v', '\x8d', '|', '\x8f', 'T', 'N', '1', '[', '=', 'è', '\x19', '\\', 'm', '\x90', 'v', '\x8d', 'f', '$', '\x8a', ' ', '^', '\x1d', '\\', '/', '\\', '1', '\x91', 'm', '\x8f', 'e', '\x8f', 'c', '+', 'ò', 'ü', '\x00', 'þ', '÷', '\x07', '\\', 'u', '\x90', 'c', '\x8e', 'R', '\x8e', 'O', '\x98', '¥', '[', '6', 'ø', 'ÿ', 'ú', '5', '3', '4', '$']
Original text:  ASTB>
\#XM\v|TN1[=è\mvf$ ^\/\1mec+òü þ÷\ucRO¥[6øÿú534$
EN

回答 1

Stack Overflow用户

发布于 2021-08-10 13:36:38

encode_zip_cycle中,您先将“加密的”字符串编码为utf-8,然后再将其编码为base64。但是,您稍后不会在decode_zip_cycle中恢复此操作。

这是正确的decode_zip_cycle函数:

代码语言:javascript
复制
def decode_zip_cycle(key, enc):
    enc = base64.urlsafe_b64decode(enc).decode()
    dec = [chr((256 + ord(enc_char) - ord(key_char)) % 256)
           for enc_char, key_char in zip(enc, cycle(key))]
    print(dec)
    return "".join(dec)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68725572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档