我正在编写一个简单的应用程序,以使用AES /
CBC(模式)对我的消息进行加密。据我了解,CBC模式需要IV参数,但我不知道为什么我的代码在不使用IV参数的情况下也能工作。任何人都可以解释为什么?谢谢。
打印的加密消息:T9KdWxVZ5xStaisXn6llfg ==毫无例外。
public class TestAES {
public static void main(String[] args) {
try {
byte[] salt = new byte[8];
new SecureRandom().nextBytes(salt);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
KeySpec keySpec = new PBEKeySpec("myPassword".toCharArray(), salt, 100, 128);
SecretKey tmp = keyFactory.generateSecret(keySpec);
SecretKeySpec key = new SecretKeySpec(tmp.getEncoded(), "AES");
Cipher enCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
enCipher.init(Cipher.ENCRYPT_MODE, key);
// enCipher.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(iv));
byte[] cipherBytes = enCipher.doFinal("myMessage".getBytes());
String cipherMsg = BaseEncoding.base64().encode(cipherBytes);
System.out.println("Encrypted message: " + cipherMsg);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
不带IV使用时,对于包括AES在内的某些类型的密码,它将隐式使用0
IV。请参阅Cipher类文档。
空IV(或确定性IV)的缺点是它容易受到字典攻击。IV的要求是防止相同的纯文本块每次生成相同的密文。
我希望有一个用C编写的程序,可以在没有openssl这样的大型库的帮助下,用AES-CBC对字符串进行编码/解码。 目标: 使用密码短语对字符串进行编码/解码: 因此,应用程序需要接受3个输入参数。。。 输入字符串(待编码)/或已编码字符串(待解码) 用于编码/解码字符串的密码 编码或解码指示器 我对C语言不熟悉(我可以用C#编码)。 我已经找到了https://github.com/kokke/
我从Python得到一个加密的base64字符串。 格式是AES 256 CBC,但当我尝试使用Android解密时,它将解密字符串返回为nil。 这里我使用https://github.com/fukata/aes-256-cbc-example
问题内容: 我正在尝试在NodeJs中解密。它在Java中工作。但是我无法在Node中实现相同的功能。 节点版本:8.4 请找到我的NodeJs代码: 请找到有效的Java解密代码 我得到了不同的解密文本。在NodeJ中,我无法获得与Java中相同的结果。另外,我无法修改Java加密代码。所以我必须弄清楚Node中的解密。 你能帮我这个忙吗? 问题答案: 这是Java和Node.js中的完整示例,
问题内容: 我正在尝试用Java实现AES,这是我使用的代码: 我需要此固定密钥和IV进行测试,但出现以下异常: 如何在此AES实现中使用固定的IV?有什么办法吗? 问题答案: 首先, 创建一个大小为1的字节数组,而不是大小为32的字节数组(如果您打算这样做)。 其次,AES的IV大小应为16字节或128位(这是AES-128的块大小)。如果使用AES-256,则IV大小应为128位大,因为AES
我试图在CBC模式下使用AES和Crypto++库加密(和解密)一个文件 以下是我已经做的: 为了加密文件,我以二进制模式打开它,并将内容转储为字符串: 当我将尝试解密此文件时,我如何分别提取iv和密文?IV是16字节长,但在这里我完全迷失了,我不知道如何做。
问题内容: java中的try … catch … finally块共有3种排列。 试着抓 尝试…抓住…最后 尝试…最后 一旦执行了finally块,控制权将移至finally块之后的下一行。如果我删除了finally块并将其所有语句移到try … catch块之后的行,那么与将它们放入finally块中的效果相同吗? 问题答案: 我认为willcode最接近在这里表达关键点,也许每个人都知道,但