首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用128位AES执行文件加密

如何使用128位AES执行文件加密
EN

Cryptography用户
提问于 2012-04-22 10:21:58
回答 2查看 6.5K关注 0票数 4

我很困惑。如何使用128位高级加密标准加密文件?

我是否只需要加密文件名和它的内容,还是需要对其进行加密?有什么东西我将需要提取到文件加密吗?

例如,我想加密MS Word文件或PDF文件。

如果文件只包含文本,那么加密文件很容易,但是如果文件中有图像怎么办?我该怎么做?

EN

回答 2

Cryptography用户

回答已采纳

发布于 2012-04-22 11:06:47

你的困惑是正确的,因为你也可以问:“我如何使用支持xor、移位和旋转的CPU加密文件?”答案是,你当然可以,但很明显,如果你要做得对的话,它还有很多。

AES只是一个标准的分组密码原语。这个标准告诉您的唯一事情是,如何使用键将单个128位块转换为另一个128位块。它不会告诉您密钥来自何处,也不会告诉您如何处理任何大于128位的数据。这些方面也必须指定,其中一个例子是基于密码的加密,如在PKCS#5 PBES2与AES-CBC-128和PBMAC1与HMAC-SHA-256相结合。

在阅读消费软件或商业软件的技术规范时,唯一指定的是块密码原语,如"128位AES“,这并不少见。根据我的经验,这往往是由于以下任何一种原因:

  • 软件开发人员对密码学一无所知,实际上使用的是AES-ECB-128,其中的密钥嵌入了软件中的常量。
  • 软件开发人员正在使用一种正确的文件加密方案,但只指定了块密码原语,因为这是他们认为出于营销原因所必需的唯一热门词。
  • 如果该软件是基于使用3 AES(例如3 AES)方案的遗留软件,则说明它们使用"128位AES“可能只是表明它们使用的方案与以前相同,但刚刚取代了分组密码原语。

如果您对某些现有软件如何加密文件感兴趣,只知道软件使用AES-128是不够的。如果您对如果您自己编写这样的软件需要查找哪些方案和算法感兴趣,那么您必须对您的安全需求更加具体……

  • 加密文件的个人或实体与解密文件的个人或实体之间的关系是什么?
  • 你到底希望通过加密文件来防止哪些不好的事情发生?
票数 7
EN

Cryptography用户

发布于 2012-04-22 12:52:55

我将在此详述Paŭlo的评论:

来自外部的完整文件只是一个字节流。您的加密程序(不应该)不关心这是一个文字文件和图像,一个纯文本文件,一个视频文件或其他东西。你只要加密字节就行了。

你不明白的是,我认为是块的概念,或者说有点。在古典密码学中,使用数据类型(如字母和数字)是很常见的--毕竟,这是人类所存储和处理的。像“拿A,把它的三个字母向下移到D”这样的语句是人类可以理解的东西。

计算机也能理解这些信息--但它们也代表着许多其他类型和格式的信息--比人类多得多。他们用二进制--0和1的字符串来做这件事。每一个数字被称为比特,8位被称为字节。

现在我们开始讨论块的概念。块只是位或字节的集合。AES使用的128位块是128位,即16字节.

现在,让你困惑的是,有几种类型的AES加密128位,192位和256位。它们指的是键的大小,而不是输入块。该块始终保持在128位,至少对于AES (它所基于的算法Rijndael)支持更多的块大小。

所以,当Paŭlo说“取字节就来”时,您可以逐个读取文件块--一次读取16个字节。但是,请继续阅读..。

您可以一次加密这些块字节。AES能够并将这样做,这种模式被称为电子代码簿(ECB)。然而,现在我要翻译Hendrik的(非常正确的,+1)语句:

AES只是一个标准的分组密码原语。这个标准告诉您的唯一事情是,如何使用键将单个128位块转换为另一个128位块。它不会告诉您密钥来自何处,也不会告诉您如何处理任何大于128位的数据。

看,事情是这样的。在我们的欧洲央行模式下,我们通过简单地将文件分成128位块来处理大于128位的文件。事实证明,这可能是一种非常不安全的工作方式,因为模式可能会出现在与文件结构相关的密文中。

因此,有不同的方法来使用称为运作模式的分组密码。因此,Hendrik将AES称为原语,因为它只是更大方案的一部分。有许多操作模式,并不是所有的操作模式都适合您的用例--但不用说,您可能需要一种不是欧洲央行的操作模式。

这些新的操作模式仍然以字节和位的形式--有时是128位块,有时是一次位--的形式,取决于所讨论的模式。使用计算机的本机格式(位和字节)而不是文本的概念保持不变,因此任何文件类型都可以处理。

正如Hendrik所提到的,生成密钥的问题也是一个有趣的例子。我见过软件开发人员直接将字符串(二进制术语)转换成键。这是生成密钥的一种非常糟糕的方法,因为可能的密钥数量比AES密钥空间要少得多。我在这里不再说了,因为这是关于文件的--但不用说,这肯定是要调查的东西。

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

https://crypto.stackexchange.com/questions/2423

复制
相关文章

相似问题

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