Skip to main content
 首页 » 编程设计

python之自定义 Python 加密算法

2025年05月04日9kenshinobiy

嘿,我研究这个已经有一段时间了,我记得我的兄弟引导我完成了这个完全相同的算法。

基本上,它只是添加键中字符和短语的 ascii 值。

我可以用这个加密它:

def encrypt(key, string): 
    encoded = '' 
    for i in range(len(string)): 
        key_c = ord(key[i % len(key)]) 
        string_c = ord(string[i % len(string)]) 
        encoded += chr((key_c + string_c) % 127) 
    return encoded 

但就解密而言,我似乎不记得我们做了什么。很难逆转模组 :P 有什么想法吗?

请您参考如下方法:

很简单,让我们看看它是如何工作的。首先,通过减去 key 得到加密消息。

enc = msg + key (mod 127) 

如何获取原始消息?很简单,两边减去key

enc - key = msg + key - key (mod 127) 

我们得到:

enc - key = msg (mod 127) 

更多详情请引用Modular arithmetic ,我认为它应该属于组/场/环之一。我不是数学专家,要进一步阅读,您应该查看 Number theory .这是改进后的代码:

def encrypt(key, msg): 
    encryped = [] 
    for i, c in enumerate(msg): 
        key_c = ord(key[i % len(key)]) 
        msg_c = ord(c) 
        encryped.append(chr((msg_c + key_c) % 127)) 
    return ''.join(encryped) 
 
def decrypt(key, encryped): 
    msg = [] 
    for i, c in enumerate(encryped): 
        key_c = ord(key[i % len(key)]) 
        enc_c = ord(c) 
        msg.append(chr((enc_c - key_c) % 127)) 
    return ''.join(msg) 
 
if __name__ == '__main__': 
    key = 'This_is_my_awsome_secret_key' 
    msg = 'Hello world' 
    encrypted = encrypt(key, msg) 
    decrypted = decrypt(key, encrypted) 
     
    print 'Message:', repr(msg) 
    print 'Key:', repr(key) 
    print 'Encrypted:', repr(encrypted) 
    print 'Decrypted:', repr(decrypted) 

输出

Message: 'Hello world' 
Key: 'This_is_my_awsome_secret_key' 
Encrypted: '\x1dNV`O\nkO`fD' 
Decrypted: 'Hello world'