我遇到了一个奇怪的问题。我用字母“A”填充了一个文本文件,并使其长度为4096字节。然后在linux上使用openssl对其进行加密:
KEY="2D242B65C517B72F8D1DAA8278CA5A2ED5D8A95BCF82BFD3778212218726335F" openssl enc -nosalt -iv 0 -K $KEY -aes-256-cbc -in $PLAINIMAGENAME -out $CRYPTIMAGENAME
(不要盐,不要静脉注射)
然后a尝试使用dm-crypt创建设备映射器环回设备:
losetup /dev/loop0 $CRYPTIMAGENAME sudo dmsetup create cryptotest --table "0 4096 crypt aes-cbc-null $KEY 0 /dev/loop0 0"
当我尝试从/dev/mapper/cryptestest读取时,我会得到A,但每512字节(块大小?)有16字节的垃圾。这怎么可能?
当我使用ECB模式(每个块都以相同的方式加密)时,一切都很正常。
顺便说一句,我不想使用LUKS进行环回加密,我需要一个无标题的AES流,它可以由开放sl或一个esspipe创建。
我找到了解决问题的方法:
设备映射器需要为每个扇区(512字节== 32个AES块)启动一个新的CBC,以便能够对扇区进行随机访问,而不必在此之前解密所有内容。因此,我必须连接长度为512的aes-128-cbc加密流。当然,四个零一点也不好。我现在用aes-128-cbc-essiv:sha256。ESSIV是使用加密密钥和扇区号的散列(sha256)计算的,因此没有扇区具有相同的加密数据。
更多信息可以在这里找到:http://www.penzin.net/dmcrypt/
问题内容: 我想知道AES加密后的数据大小,这样我就可以避免主要出于了解大小而缓存我的后AES数据(在磁盘或内存上)。 我使用128位AES 和进行加密。 使用各种输入大小执行的一些测试表明,如下计算的后期加密大小是正确的: 但是我不确定以上公式是否适用于所有可能的输入大小。 在应用AES加密后,是否有一种方法可以计算数据的大小-事先无需缓存(磁盘或内存中的)加密数据即可知道其加密后的大小? 问题
我一直在到处寻找一些示例代码,介绍如何使用Bouncy Castle框架用标题中的加密加密一个简单的字符串。 此代码将在Windows Universal项目上运行。我以前尝试使用内置API进行加密,但在服务器上解密失败。 服务器使用 但失败的原因是: 填充无效,无法删除。 初始化向量的长度必须与块大小相同 服务器上的长度为128。我怎么能强迫它是等长的?
这几天我一直在纠结。我需要使用一个接受加密参数的API。API是用C#编写的。请求的加密如下: 算法:AES 密码模式:CBC 填充模式:PKCS7 块大小:128 密钥大小:256 加密字符串的表示形式:Base64 在搜索和尝试了网上建议的那么多东西之后,我仍然无法生成相同的加密值(特别是默认情况下不支持PKCS7,而PKCS5应该工作相同,但事实并非如此)。以下是我尝试过的一些方法: 1)使
我只想用这3种模式测试openSSL中的AES:128192和256密钥长度,但我解密的文本与我的输入不同,我不知道为什么。此外,当我传递一个巨大的输入长度(比如1024字节)时,我的程序显示。。。我的意见总是一样的,但这并不重要,至少现在是这样。代码如下: 编辑: 当我将输出大小更改为而不是时,我得到了结果: 那么,是否有可能存在Outpus大小和IV大小的问题?它们应该有什么尺寸(AES-CB
我必须在PHP中以AES CTS模式(密文窃取,有时称为AES-XTS)加密和解密数据,以便与用NET平台。英寸NET 4,本机支持这种模式。 对于PHP,我找不到解决方案,根据手册,mcrypt似乎不支持这种模式。 任何人都可以解释一下普通CBC和CBC-CTS之间的区别吗?是否可以使用现有的模块/库使后者在PHP中工作?
我已经设法使它能够处理不包含og a-zA-Z0-9之外的字符和一些特殊字符的文本,但如果我使用丹麦字母,如ielouangØ,解密的文本会显示?而不是实际的字母。所有文件都保存为UTF-8,头字符集=UTF-8 Javascript - input: "tester for php: 我试过选项0,OPENSSL_ZERO_PADDING和OPENSSL_RAW_DATA,结果相同。有人能帮我吗