维吉尼亚密码
难度: 初级
近年来安全漏洞的发生频率和影响之大,使得开发者必须了解恶意攻击者用来破坏应用程序的方法。了解应用程序如何被破坏是制定有效保护措施的第一步。
恶意攻击者最容易通过的方式之一就是访问开发人员未加密的数据。有许多强大的加密算法可以确保即使数据被访问,也无法被读取。这些包括AES、Blowfish和TripleDES等。
然而,这些算法可能相当复杂,因此本应用程序的目标是实现一种经典的加密算法——维吉尼亚密码,以学习密码工作原理的基础知识。
要求与约束
- 开发人员只能使用原生语言特性来实现维吉尼亚密码。不允许使用库。
- 开发人员应仅使用维吉尼亚密码算法步骤描述的描述来设计和实现自己的解决方案。
- 成功实现此算法后,开发者应自问以下问题:
- 使用维吉尼亚密码加密您的财务信息会让您有信心吗?为什么?
- 您如何检测消息是否使用了维吉尼亚密码加密?
- 您会如何尝试破解这种加密?
用户故事
- [ ] 用户可以看到一个包含以下组件的应用程序窗口:
- 明文消息输入字段
- 加密密钥输入字段
- 操作按钮 - '加密' 和 '解密'
- 结果显示的加密或解密消息
- [ ] 用户可以在明文消息输入字段中输入要加密的文本。
- [ ] 用户可以输入用于加密明文消息的维吉尼亚密码算法将使用的密钥。
- [ ] 在明文消息被加密之前,用户可以看到'解密'按钮处于禁用状态。
- [ ] 用户可以点击'加密'按钮来加密明文消息。
- [ ] 用户可以在结果字段中看到显示的加密消息。
- [ ] 在加密消息显示后,用户可以看到'解密'按钮启用。
- [ ] 用户可以点击'解密'按钮来解密加密消息,并在结果字段中显示其内容。
额外功能
- [ ] 解密后,用户可以看到一个'比较'按钮,将原始明文消息与解密消息进行比较。
- [ ] 如果'比较'检测到这两个字段的内容有差异,则用户会看到错误消息。