首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编写加密算法的技术(专供个人使用)

编写加密算法的技术(专供个人使用)
EN

Security用户
提问于 2011-12-09 01:47:34
回答 8查看 64.1K关注 0票数 19

在这个问题的序言中,我要指出,我完全理解编写自己的加密算法的危险,我永远不会使用自制加密来保护除我之外的任何人的数据。

今天,我被分配了一个计算机科学学期的项目,把我们所学到的知识集中到一个程序中。这个程序的部分功能是它可以加密和解密字符串。我们必须自己编写这些加密方法,因此我们不能使用我们正在使用的语言(Java)中内置的任何内容。最后,我们需要避免使用密钥进行加密的任何东西。

现在,在和我的一些同学交谈后,似乎几乎每个人都在使用ROT13或其他类似的方法。因为我是一个卓越的人,而且我不想和其他人一样,我想设计我自己的加密方法。但是,我有点不知道该从哪里开始。那么,有哪些基本的或高级的加密技术呢?

EN

回答 8

Security用户

发布于 2011-12-09 11:30:16

如果您通常对项目

之外的密码学感兴趣

这取决于您希望进行何种类型的加密。重要的警告:这个答案仅仅是指向正确的理论方向。我强烈建议你在跳进之前多读一遍--你读得越多,你就越能理解以前的密码是如何被破坏的,并且不会犯同样的错误。

公钥

要操作公钥系统,您需要一个陷门函数。不幸的是,维基百科上的建议是非常准确的:

已经提出了几个函数类,很快就很明显地发现陷门函数比最初想象的更难找到。

陷门函数是相当困难的;陷门排列(其中函数的输出和输入集是相同的,因此函数“置换”了集合内的输入)甚至更难。粗略地说,素因式分解问题和离散对数问题是两个“大问题”。机会在这一领域,使用一个现有的将是目前为止最简单的方法。

对称密钥

对称密钥算法是有意可逆的,但是没有一个输入(密钥)被设计成很难逆转。根本的想法是混淆/扩散原理。现代密码技术中常用的技术有置换置换网络feistel网络。您还应该考虑阅读分组密码工作方式

对,太好了,我该从哪里开始呢?

尽可能多地阅读。我不喜欢标准的建议“不要设计你自己的密码”。我认为如果人们愿意的话,他们应该尝试一下。但是,我再怎么强调也不为过,要做到正确是多么的困难。由于项目的时间有限,一种技术可能是使用一个现有密码的简单示例,因此:

用于您的项目

作为一种教育实践,RC4很容易实现。很久以前(不久前),它被用来保护SSL/WEP通信--有时它仍然被使用,所以您将使用真正的密码。它确实有一些安全问题 -理解这些也将有助于您的一般密码教育。然而,由于您的要求不是绝对的安全,而是更多的学习,我认为这将是理想的。

如果你觉得自己很有野心,而且很懂你的语言,那么AES也不难在欧洲央行模式下实施。FIPS-197是相当可读的,通常以一种可访问的方式解释该算法。

您认为ROT13是一个糟糕的例子是正确的。即使不知道每个字符的偏移量是13位,假设您使用的是ASCII,您只需尝试您的密码的127 (或255用于扩展的ASCII)偏移-文本,直到正确的一个删除。因此,即使没有密钥,解密也是非常简单的。

票数 15
EN

Security用户

发布于 2011-12-09 13:33:13

你必须避免使用钥匙的东西?就我个人而言,如果算法不使用密钥,我看不出它是如何称之为“加密”的。

您可以考虑编写自己的简化DES实现。顾名思义,简化的DES (或S- DES )是DES的一个大大简化的版本。它使用了一个10位的键,而且它很简单,可以用铅笔和纸来计算。

本论文是谷歌首个因“简化DES”而畅销的网站。在http://edipermadi.wordpress.com/2008/01/12/simplified-des-simulator/也有一个视觉模拟器。

票数 8
EN

Security用户

发布于 2011-12-09 02:20:46

我不想破坏你的乐趣,但你想考虑以下几点:

  1. 本质上,什么是加密?什么是事物的属性,加密和解密,为什么我们要这样做,作为一个社会?你想要考虑的特点,以及过程。
  2. 什么是钥匙?根据您的研究,您可能想要求您的讲师澄清这一点。
  3. 创建所有加密技术家族的分类系统。通过这项研究,你可能会发现一个或两个有趣的答案。

这是一个以学期为基础的项目,所以你不能(或者应该)在一夜之间回答这个问题。代码本身可能只需要一两天的时间。真正的学习是在给定的约束条件下找到解决方案。

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

https://security.stackexchange.com/questions/9605

复制
相关文章

相似问题

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