我有一个关于在AES加密中使用初始化向量的问题。我引用以下文章/帖子将加密功能构建到程序中:
[1] 基于Java256位AES密码的加密
[2]http://gmailassistant.sourceforge.net/src/org/freeshell/zs/common/Encryptor.java.html
我最初从第一个链接开始关注erickson的解决方案,但是据我所知,我的实现不支持PBKDF2WithHmacSHA1。因此,我转向第二个链接,以了解自己的迭代SHA-256哈希创建的想法。
我的问题是如何创建IV。一个实现([1])使用Cypher类中的方法来导出IV,另一个实现[[2])使用哈希的后16个字节作为IV。简而言之,为什么从安全角度来看,两者之间的差异和哪个更好?我也对IV的派生和使用感到困惑(我了解它们的用途,但不是微妙的区别),因此也欢迎进行任何澄清。
我注意到第二个链接使用的是AES-128而不是AES-256,这向我暗示,如果我想使用此方法,则必须升级到SHA-512。这似乎是一个不幸的要求,因为用户的密码必须长16个字符才能确保远程安全的哈希,并且此应用程序将用于手机。
来源可根据要求提供,但仍不完整。
先感谢您。
在从Delphi2007迁移到XE2的过程中,我们正在考虑将加密库从DCPCrypt切换到Turbopower Lockbox 3。 a) 在DCPCrypt中,我可以显式控制初始化向量。如何在TPLB3中设置IV? b)DCPCrypt没有填充,我们在加密前用零填充明文。TPLB垫如何?当然,我们仍然可以自己做。 密码=AES-256; 链接模式=CBC; 终止=C#样式全零填充; IV传输=在
我有下面的代码,使用我在这里找到的一个简单的面向字节的AES-256库为AES-256 ECB加密工作。 主要: 加密功能: 我想在此程序中添加一个IV以创建AES-256 CBC模式。根据我的理解,IV实现如下: 将第一个块与IV进行异或。 将所有后续块与前一块的密码文本进行异或 我的问题是逻辑是什么样的?我如何将其实现到我的代码中?
我在一个项目中工作,在这个项目中,我通过XML流向web服务发帖。在这种情况下,提供程序请求使用密码块链接(CBC)模式下的高级加密标准(AES)和128位初始化向量对路由xml进行加密。我是用VB.NET编码的,从我可以看出我已经满足了他们所有的加密要求,但当我提交帖子时,我总是得到一个“无效的路由输入加密”的错误响应。我没有做很多与加密,所以我希望有人与一些加密经验可以帮助我在这里。它失败是因
我使用初始化向量和填充实现了AES 128位加密,如下面的代码所示。我碰巧使用了ColdFusion,但我认为这并不重要。加密结果显示了一些重复模式,这是我没有预料到的,但话说回来,我不知道正确输出的特征。我是否正确地进行了初始化向量和填充? 下面是示例输出: 每个加密字符串都以相同的21个字符结尾: 当原始字符串相同(第3和第4个示例中的“String3”)时,EncryptedString以相
我用一个AES加密/解密的例子做了以下观察,这对我来说是非常反直觉的。 我尝试在CBC模式下用AES加密和解密一个简单的有效负载。我的理解是,根据以下回答,初始化向量不必是秘密的:https://security.stackexchange.com/a/17046.在我看到的大多数例子中,初始化向量是加密负载的非随机部分。 但是通过改变初始化向量,我能够在加密过程中改变消息。 例如,请参阅我从ht
我假设使用以下元素按以下顺序构建一个字节数组: 对称加密的AES密钥(对于AES 128有一个随机密钥,对于AES 128有一个随机初始化向量。在CBC模式下使用AES 128和PKCS5填充进行加密。在加密之前,文本用UTF-8进行编码) AES IV 加密消息(使用ECB模式下的RSA算法和PKCS1填充、先前生成的密钥和消息收件人的公钥) 我正在做的是获取每个参数的长度,以便创建新的byte