首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python加密程序

Python加密程序
EN

Stack Overflow用户
提问于 2018-08-26 17:50:13
回答 1查看 3.2K关注 0票数 2

日安,

我创建了一个简单的ASCII加密程序,我只有3个问题:

  1. 如何检查输入的密钥是否不正确,如果输入错误,如何告诉我的程序不要试图解密。
  2. 为什么加密的文本比原始文本长?
  3. 如果我想加密其他东西,而不是ASCII文本,那会有多难呢?

谢谢你,下面是我的代码和结果:

代码语言:javascript
复制
import time
key = "This■isôthe╝key¦b££glkHPAfgbm(*&%$$*(■ô▀"
string = "Encryption the hell out of me, even if I repeatttttttt lettersssss you can't tell"

entext = ""
detext = ""
keycnt=0

print("Displaing Text to be Encrypted")
time.sleep(1)
print(string)
time.sleep(5)

#Loops through the string and the key and adds the ascii values together to create a Encrypted character
for sLetter in string:
    entext += chr(ord(sLetter) + ord(key[keycnt]))
    keycnt += 1
    if keycnt == len(key):
        keycnt =0


print("Displaying encrypted Text")
time.sleep(1)
print(entext)

#Resetting key position
keycnt=0

#Loops through the string and the key and subtracts the ascii values together to create a decrypted character
for sLetter in entext:
    detext += chr(ord(sLetter) - ord(key[keycnt]))
    keycnt += 1
    if keycnt == len(key):
        keycnt =0
time.sleep(2)

print("Displaying decrypted Text")
time.sleep(1)
print(detext)
time.sleep(1)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-26 18:20:36

首先,加字符的密钥不是一个好密码,甚至不是一个好的凯撒或维根埃密码。你需要模块加法:普通字母表模数26 (但没有大写字母和其他字符)或模数256表示字节。在字节的情况下,键的每个字节都需要一个随机值。

当前,您的密文有偏见:如果您要添加一个具有0x00键值的字符值,那么您将得到0x00作为密文字节。问题是,在加密方案中,只有使用特定的组合才能达到0x00的值。因此,如果您看到0x00值,那么您将立即知道键值和明文值。

如何检查输入的密钥是否不正确,如果输入错误,如何告诉我的程序不要试图解密。

无法检查键的值是否正确。您唯一能做的就是验证输出是否符合您的预期。

现代密码学使用消息身份验证代码(MAC)来创建身份验证标记。该标记可以根据密文和密钥(或者,对于不太安全的方案,明文和密钥)进行验证。还有一些经过身份验证的加密方式,比如GCM,它们基本上是带有MAC身份验证内置的密码。

为什么加密的文本比原始文本长?

如果您添加值为255或更低的值,则将得到510或更低的值。然而,这些值至少需要两个字节才能编码。

如果我想加密其他东西,而不是ASCII文本,那会有多难呢?

不是很难:只需使用真正的随机键执行XOR或模块加法(例如,8位/1字节的模块256 )。然而,要创建任何安全的东西,要么使用一次性便携板(其中密钥与二进制明文大小相同),要么使用现代密码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52028845

复制
相关文章

相似问题

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