gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 02:25:06 25 4
gpt4 key购买 nike

我对加密方面的东西完全陌生,我对java中的加密有一些疑问我用java中的RSA加密来做到这一点

Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPTION_MODE,publicKey);
byte result = cipher.doFinal(data);

使用 AES 的方式相同,我使用此代码生成 AES key

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);
}

输出是:10401040。。1040

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

最佳答案

这不是推荐的方式,您需要更改它。您可能想更好地了解 StackOverflow。您的问题在这篇文章中直接得到解答How to encrypt String in Java .

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

关于java - 在java中进行加密的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47909754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com