- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在设计加密算法。该算法是对称的(单 key )。
您如何根据位来衡量算法的强度? key 长度是算法的强度吗?
编辑:
Lesson 1: Don't design an encryption algorithm, AES and others aredesigned and standardized by academics for a reason
Lesson 2: An encryption algorithms strength is not measured in bits, key sizes are. An algorithm's strength is determined by its design. In general, an algorithm using a larger key size is harder to brute-force, and thus stronger.
最佳答案
首先,这是认真的吗?如果是,请立即停止。不要这样做。设计算法是世界上最难的事情之一。除非您有多年破解密码的经验,否则您将无法设计任何远程安全的东西。
AES 和 RSA 有两个截然不同的目的。区别不仅仅是签署。 RSA 是一种公钥算法。我们将其用于加密、 key 交换、数字签名。 AES 是一种对称分组密码。我们将其用于批量加密。 RSA 非常慢。 AES 非常快。大多数现代密码系统使用混合方法,使用 RSA 进行 key 交换,然后使用 AES 进行批量加密。
通常,当我们说“128 位强度”时,我们指的是 key 的大小。但是,这具有难以置信的欺骗性,因为算法的强度远不止其 key 的大小。换句话说,仅仅因为你有一百万位的 key ,它没有任何意义。
算法的强度是根据其 key 大小以及对密码分析攻击的抵抗力来定义的。如果存在比蛮力更好的攻击,我们就说算法被破坏。
因此,使用 AES 和 128 位 key ,如果没有小于 2^128 的攻击,则 AES 被认为是“安全的”。如果有,我们认为它“坏了”(在学术意义上)。其中一些攻击(供您搜索)包括差分密码分析、线性密码分析和相关的 key 攻击。
我们如何暴力破解算法也取决于它的类型。像 AES 这样的对称分组密码是通过尝试每个可能的 key 来强制执行的。但是对于 RSA, key 的大小就是模数的大小。我们不会通过尝试每个可能的键来破坏它,而是通过分解。因此,RSA 的强度取决于数论的当前状态。因此, key 的大小并不总是告诉您它的实际强度。 RSA-128 非常不安全。通常 RSA key 大小为 1024 位+。
具有 56 位 key 的 DES 比设计的几乎所有业余密码都强。
如果你对设计算法感兴趣,你应该从打破其他人开始。 Bruce Schenier 开设了密码分析自学类(class),可以帮助您入门:http://www.schneier.com/paper-self-study.html
FEAL 是有史以来最破败的密码之一。它是学习分组密码密码分析的一个很好的起点。源代码是可用的,上面有无数已发表的论文,所以如果你卡住了,你可以随时“查找答案”。
关于encryption - 如何以位为单位定义加密算法强度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5348580/
我有 2 张 table ; item_in(item_id,unit) item_out(item_id,unit) 现在假设我想知道为每个项目插入了多少个单元,我只是查询 select sum(u
API 浏览器中有 3 个速率限制类别: 如果我使用 Youtube 数据 API(其中跟随 implicit OAuth grant flow)创建客户端 Web 应用程序,我是否仍被限制为总共 1
我正在使用一个 postgresql 表,该表包含许多带有 GEOMETRY(Point, 4326) 的行。使用 ST_SnapToGrid 函数和 DISTINCT 选择,我只根据显示的 map
我对 C++ 和 Cppunit 都很陌生。我正在尝试编译一个小的 cppunit 测试。但是,我没有成功。 qwerty@qwerty:~/chessgame/src$ g++ -Wall Coor
我注意到 REM 单位可用于元素的大小,而不仅仅是字体大小。并且对 HTML 字体大小属性非常有用。 html { font-size:1vw } @media all and (max-width:
我试图在 Shapely 中找到线串的长度(以米为单位),但似乎无法达到预期的结果。几乎可以肯定我在坐标系方面犯了一些错误,但我无法弄清楚。 这是单行的一些简化代码: from shapely.geo
对于大量的物种数据集,我试图计算给定月份集的圆形平均值,例如对于从 3 月到 7 月开花的物种,我想知道开花的平均月份(即 5 月),以及围绕平均值的方差。 给定月份是循环的,因此 12 月到 2 月
我还应该在单元测试中释放对象吗? 我注意到在Apple的“iPhoneUnitTests”示例项目中,设置方法中的对象是[[object alloc] init],但从未在单元测试中的任何地方发布?
我目前正在使用 OpenGL 进行开发,并使用米作为我自己的单位,即 20 厘米宽的三角形为 0.2。然而 OpenGL 似乎对这些数字进行了舍入,最终的形状并不完全符合我的意愿。这在 OpenGL
我的问题与对信号进行频谱分析或将信号放入 FFT 并使用合适的数值包解释结果的物理意义有关, 具体: 获取一个信号,例如时变电压 v(t) 将其放入 FFT 中(您将得到复数序列) 现在取模 (abs
在深入研究代码后,我意识到 Fabricjs Text 对象的 fontSize 是在 PIXELS 中测量的。在我的项目中,有时我需要使用点而不是像素。 当指定单位时,我只在代码中找到一个位置,此片
在我的应用程序中,我尝试使用,RentModel.find({prop_location : { $near : [msg.lat, msg.lng],$maxDistance : 500}},函数(
我正在开发我的第一个 LibGdx (Scene2d + Box2d) 游戏,这对我来说是一个全新的领域,但仍然对一些事情感到有点困惑,尤其是关于单位。已经看到了几种不同的处理方法,但仍然不确定哪种方
我正在寻找一个 MySQL 查询(子查询很好),它将以下列格式获取过去一年中每个订单的单位分布: units_per_order | number_of_orders |
我正在使用 Highcharts生成折线图。 我遇到了 numberFormat 的问题: var test = 15975000; numberFormat(test, 0,',','.'); 结果
我正在尝试创建一些用户定义的类型来表示单位,以便我可以强类型化函数参数。例如,长度为毫米,速度为毫米每秒,加速度为毫米每秒等。 到目前为止我已经这样做了: template struct Value
谁能解释一下最低精度的 ULP 单位?我有如下定义,但还是不清楚 “表示分数时的误差大小与存储的数字大小成正比。ULP 或最小精度单位定义了存储数字时可以获得的最大误差。存储的数字越大,ULP 越大”
我有一张卡片图像,我需要重复它 30 次,每次我想申请一张特定卡片的左侧位置时,它会与卡片重叠,然后再停留在一副牌的位置上。 问题是,当我将左侧位置应用于图像卡片时,它会将相同的左侧位置应用于所有卡片
有没有办法用php代码更改每个滚动条的大小。 说明:当我向下滚动时,它会下降x(50~)像素,我想将x改为20。 编辑:这是我的代码。。。 Excel "; $i=1; wh
我不知道下面的想法是否可行或不能概括它,但我想将每个计算值四舍五入到 100 单位四舍五入。 例子: double x; int x_final; ... if (x<400) x_final=400
我是一名优秀的程序员,十分优秀!