相关疑难解决方法(0)

为什么使用带有CBC模式的非随机IV是一个漏洞?

我理解IV的目的.特别是在CBC模式下,这确保了使用相同密钥加密的2条消息中的第一条块将永远不会相同.但是,如果IV是连续的,为什么它是一个漏洞呢?根据CWE-329 NON-Random IV允许字典攻击的可能性.我知道在实践中像WEP这样的协议不会隐藏IV.如果攻击者拥有IV和密文短信,那么这就打开了对密钥进行字典攻击的大门.我不知道随机iv如何改变这一点.(我知道对wep的攻击比这更复杂.)

随机静脉注射有什么安全优势?这仍然是"理想分组密码"的问题吗?(一种完全安全的分组密码,没有可能的弱点.)

security encryption cryptography

40
推荐指数
3
解决办法
3万
查看次数

与OpenSSL命令兼容的密钥功能密码?

例如,命令:

openssl enc -aes-256-cbc -a -in test.txt -k pinkrhino -nosalt -p -out openssl_output.txt
Run Code Online (Sandbox Code Playgroud)

输出如下:

key = 33D890D33F91D52FC9B405A0DDA65336C3C4B557A3D79FE69AB674BE82C5C3D2
iv  = 677C95C475C0E057B739750748608A49
Run Code Online (Sandbox Code Playgroud)

这个密钥是如何生成的?(作为答案的C代码太棒了要求:))另外,iv是如何生成的?

对我来说看起来像某种十六进制.

c openssl cryptography password-encryption kdf

18
推荐指数
1
解决办法
2万
查看次数

如何使用AES解密使用openssl命令加密的Java文件?

我需要使用以下命令在JAVA中解密在UNIX中加密的文件:

openssl aes-256-cbc -a -salt -in password.txt -out password.txt.enc
mypass
mypass
Run Code Online (Sandbox Code Playgroud)

我必须在java中解密,就像我在UNIX中所做的那样

openssl aes-256-cbc -d -a -in password.txt.enc -out password.txt.new
mypass
Run Code Online (Sandbox Code Playgroud)

有人可以给我一个java代码来做这个吗?

java openssl aes

9
推荐指数
2
解决办法
2万
查看次数

AES/CBC真的需要IV参数吗?

我正在编写一个简单的应用程序来使用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();
    }

}
}
Run Code Online (Sandbox Code Playgroud)

java aes password-encryption cbc-mode

5
推荐指数
1
解决办法
1万
查看次数