Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java加密的正确方法_Java_Encryption_Aes_Rsa - Fatal编程技术网

java加密的正确方法

java加密的正确方法,java,encryption,aes,rsa,Java,Encryption,Aes,Rsa,我对加密技术一无所知,我对java中的加密技术有一些疑问 我通常在java中为RSA加密执行此操作 Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPTION_MODE,publicKey); byte result = cipher.doFinal(data); 和使用AES的方法一样,我使用这段代码生成AES密钥 SecureRandom random = new SecureRandom(); byte

我对加密技术一无所知,我对java中的加密技术有一些疑问 我通常在java中为RSA加密执行此操作

Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPTION_MODE,publicKey);
byte result = cipher.doFinal(data);
和使用AES的方法一样,我使用这段代码生成AES密钥

SecureRandom random = new SecureRandom();
byte [] key = new byte [16];
random.nextByte(key);
SecretKeySpec secretKey = new SecretKeySpec(key,"AES");
但正如我在其他程序代码中看到的,这不是他们使用加密的方式,我总是看到他们在AES中使用IV参数,他们从不使用“AES”或“RSA”来获取密码实例。 我用来加密数据的方式安全吗? 我肯定我错过了什么

更新:

我还有一个问题,关于在AES加密中更改数据大小,就像我用AES加密数据一样,它将数据大小从1024更改为1040

    byte key [] = new byte[16];
    SecureRandom random = new SecureRandom();
    random.nextBytes(key);
    SecretKeySpec keySpec = new SecretKeySpec(key,"AES");
    Cipher c = Cipher.getInstance("AES");
    c.init(Cipher.ENCRYPT_MODE,keySpec);
    FileInputStream in = new FileInputStream("test.txt");
    byte [] buffer = new byte[1024];
    byte [] encrypted;
    while (in.read()>0){
        encrypted = c.doFinal(buffer);
        System.out.println(encrypted.length);
    }
结果是: 1040 1040 . . 1040

简单加密的数据大小始终比原始数据大16字节
我必须处理这个问题吗,还是因为我使用Cipher.getInstance(“AES”)

这不是推荐的方法,您需要更改它。您可能想更好地了解StackOverflow。这篇文章直接回答了你的问题


确保你能更深入地了解所有答案。例如更多

这不是推荐的方法,您需要更改它。您可能想更好地了解StackOverflow。这篇文章直接回答了你的问题


确保你能更深入地了解所有答案。例如更多

我的观点是,这个基本的问题,或者说教程,太宽泛了。但由于它们有时会吸引到好的答案,我会推迟投票。网上有很多优秀的资源,你可以使用它们来获得更多的最新信息。密码学是一个复杂的问题,您必须在尝试编程之前理解它,至少如果您希望保持安全的话。例如,您需要了解什么是以及为什么使用它。一段时间内更少的编码和更多的读取。一般来说:数据用AES加密,密钥用RSA加密。AES有一个加密和解密密钥,速度快,并且没有数据大小限制。RSA有两个密钥(一个用于加密,另一个用于解密),速度非常慢,并且数据大小限制小于密钥大小。我认为,这个基础或教程的问题太广泛了。但由于它们有时会吸引到好的答案,我会推迟投票。网上有很多优秀的资源,你可以使用它们来获得更多的最新信息。密码学是一个复杂的问题,您必须在尝试编程之前理解它,至少如果您希望保持安全的话。例如,您需要了解什么是以及为什么使用它。一段时间内更少的编码和更多的读取。一般来说:数据用AES加密,密钥用RSA加密。AES有一个加密和解密密钥,速度快,并且没有数据大小限制。RSA有两个密钥(一个用于加密,另一个用于解密),非常慢,并且数据大小限制小于密钥大小。我更新了我的问题,关于RSA加密的答案将非常好,因为中没有关于RSA的内容。我更新了我的问题,关于RSA加密的答案将非常好,因为中没有关于RSA的内容