Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.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
cipher.update在java中做什么?_Java_Cryptography_Aes_Des_Cbc Mode - Fatal编程技术网

cipher.update在java中做什么?

cipher.update在java中做什么?,java,cryptography,aes,des,cbc-mode,Java,Cryptography,Aes,Des,Cbc Mode,我正在实施DES-CBC。我对cipher.init、cipher.update和cipher.dofinal做什么感到困惑。我只需使用init设置键,然后dofinal获得结果。我不使用更新。对吗 当使用UTF-8和ASCII编码时,结果有什么不同 这是我的密码: byte[] ciphertext; Cipher enc = Cipher.getInstance("DES/CBC/PKCS5Padding"); enc.init(Cipher.ENCRYPT_MODE, new S

我正在实施DES-CBC。我对
cipher.init
cipher.update
cipher.dofinal
做什么感到困惑。我只需使用init设置键,然后
dofinal
获得结果。我不使用更新。对吗

当使用UTF-8和ASCII编码时,结果有什么不同

这是我的密码:

byte[] ciphertext;

Cipher enc = Cipher.getInstance("DES/CBC/PKCS5Padding");   

enc.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(key, "DES"), new IvParameterSpec(vector));

// Is this the complete ciphertext?
ciphertext = encrypt.doFinal(data.getbytes("UTF-8"));
Javadoc for says(部分添加了强调)

在单部分操作中加密或解密数据,或完成多部分操作。数据被加密或解密,这取决于此密码的初始化方式

处理输入缓冲区中的字节,以及在上一次更新操作期间可能已缓冲的任何输入字节,并应用填充(如果请求)。如果使用诸如GCM/CCM的AEAD模式,则在加密的情况下附加认证标签,或者在解密的情况下验证认证标签。结果存储在新的缓冲区中


这样做的目的是,您不必为了加密而将所有文件(例如)都读入内存。

它是
字节
,而不是
字节
…您在上读取了文档吗?javadocs应该会有帮助。在什么情况下我需要调用update()?@dfs我在最后一句话中谈到了这一点,如果你需要加密一个大文件,通常不可能将整个文件读入一个
byte[]
,以便一次调用
doFinal(byte[])
,同时调用整个消息。相反,您可以使用
update()
在分块读取文件时对其进行处理。谢谢。我现在明白了。你知道如果我使用UTF-8或ASCII编码,结果会有什么不同吗(当我把它打印到屏幕上时)?我会把它打印出来hex@dfs这取决于信息。