在java中进行加密的正确方法

问题描述 投票:0回答:1

我对加密的东西是全新的,我对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”);

java encryption aes rsa
1个回答
2
投票

这不是推荐的方式,您需要更改它。您可能希望更好地了解StackOverflow。你的问题是(in)在这篇文章How to encrypt String in Java中直接回答。

确保您进一步了解所有答案。例如this one will probably help you to understand更多。

© www.soinside.com 2019 - 2024. All rights reserved.