我目前正在使用 256个字节的* 密钥大小来AES/CBC/PKCS5Padding
用Java加密文件,但是在搜索时我在stackexchange
PKCS#5-PKCS#7填充上发现了它,并提到:
*
PKCS#5填充是8个字节块大小的PKCS#7填充的子集
所以我想知道
AES/CBC/PKCS7Padding
会更好AES/CBC/PKCS5Padding
吗?PKCS#7填充适用于从1到255字节的任何块大小。
我的示例代码是
SecureRandom rnd = new SecureRandom();
IvParameterSpec iv = new IvParameterSpec(rnd.generateSeed(16));
KeyGenerator generator = KeyGenerator.getInstance("AES");
generator.init(256);
SecretKey k = generator.generateKey();
Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding");
c.init(Cipher.ENCRYPT_MODE, k, iv);
块大小是所使用的密码算法的属性。对于AES,它始终为16个字节。
因此严格来说,PKCS5Padding不能与AES一起使用,因为它仅针对8字节的块大小定义。我假设AES / CBC /
PKCS5Padding在内部被解释为AES / CBC / PKCS7Padding。
这些填充方案之间的唯一区别是PKCS7Padding将块大小作为参数,而对于PKCS5Padding则将其固定为8个字节。当块大小为8个字节时,它们的作用完全相同。
我目前使用< code > AES/CBC/PKCS 5 Padding 对Java文件进行加密,密钥大小为256字节,但在搜索时,我在stack exchange PKCS # 5-PKCS # 7 Padding上发现了它, PKCS#5填充是8字节块大小的PKCS#7填充的子集 所以我想知道 > < li >对于上述配置,< code > AES/CBC/pkcs 7 padding 的性能
问题内容: 我在将以下JDK JCE加密代码映射到Bouncy Castles轻型API时遇到麻烦: 上面的方法很好用,但是由于Oracle对加密强度的限制,所以移植性不强。我已经尝试过几次尝试移植到Bouncy Castles轻量级API,但没有成功。 上面的尝试导致org.bouncycastle.crypto.DataLengthException:解密中的最后一个块不完整。 我在网上搜索示
我希望有一个用C编写的程序,可以在没有openssl这样的大型库的帮助下,用AES-CBC对字符串进行编码/解码。 目标: 使用密码短语对字符串进行编码/解码: 因此,应用程序需要接受3个输入参数。。。 输入字符串(待编码)/或已编码字符串(待解码) 用于编码/解码字符串的密码 编码或解码指示器 我对C语言不熟悉(我可以用C#编码)。 我已经找到了https://github.com/kokke/
问题内容: 我正在尝试编写一个简单的Java程序,该程序将使用加密纯文本。有上课: 有可能的用法: 我的输出是,但是执行此命令时: 我得到的东西与Java程序()有所不同。可悲的是,我不知道为什么结果不一样,因为我使用相同的算法和相同的键和iv。这是否意味着我的Java程序无法正常运行?任何帮助,将不胜感激。 问题答案: 两种方法都可以正常工作,但是您正在加密不同的事物。 此处的字符串语法()在字
我只想用这3种模式测试openSSL中的AES:128192和256密钥长度,但我解密的文本与我的输入不同,我不知道为什么。此外,当我传递一个巨大的输入长度(比如1024字节)时,我的程序显示。。。我的意见总是一样的,但这并不重要,至少现在是这样。代码如下: 编辑: 当我将输出大小更改为而不是时,我得到了结果: 那么,是否有可能存在Outpus大小和IV大小的问题?它们应该有什么尺寸(AES-CB
我使用JavaAPI生成128bit密钥。下面是我使用的算法: 我可以通过这些方法轻松地使用secretKey加密和解密消息。由于Java默认使用128bit AES加密,因此它使用SHA1生成原始密钥的哈希,并将哈希的前16字节用作AES中的密钥。然后以十六进制格式转储IV和密文。 但是,它返回一个空字符串。