应用程序是用户在其 PC 上运行的常规可执行程序。它没有数据库,但是它确实有用户不能更改的数据。假设文件中有一个 JSON 对象,models
程序在启动时读取该对象并在进一步的工作中使用它。由于 JSON 是原始文本,用户将能够打开此文件并更改其中的任何内容。目的是使得没有密码就无法执行此操作,但仍然允许程序读取和解释文件。文件的内容对于用户来说应该是难以理解的,但是如果他检查它并恢复存储在那里的原始文本,那就没问题了。
plain_text = 'plain text'
def encrypt_string(plain_text: str, password: str) -> str:
"""
Принять новый текст для записи в файл и зашифровать его
"""
...
def decrypt_string(encrypted_text: str) -> str:
"""
Расшифровать содержимое файла
"""
...
非对称加密是不言而喻的。文本用私钥加密,用公钥解密。两个密钥都存储在程序中,但私钥用密码加密。在尝试实现这样的事情时,我遇到了问题:
RSA算法的经典概念是使用公钥加密,使用私钥解密。这正是它在库中的实现方式
cryptography
,没有其他不同的方法。虽然从数学上来说可以交换公钥和私钥,但是却没有办法这样做。
没有办法在没有密码的情况下序列化私钥,例如自己实现对称密码加密。
私钥加密和公钥解密用于生成签名,但如果没有散列则无法创建签名。当执行逆向操作时,只需调用签名验证函数,该函数会将传递的字符串与加密的哈希值进行比较。
我对这个问题的看法正确吗?您能提出什么解决方案?