[英]Java Cipher.update does not write to buffer when using AES/GCM (Android 9)
[英]What does cipher.update do in java?
我正在实施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"));
用于Cipher.doFinal(byte[])
的Javadoc说(部分强调)
以单部分操作加密或解密数据, 或完成多部分操作 。 根据此密码的初始化方式,对数据进行加密或解密。
处理输入缓冲区中的字节以及在先前的更新操作期间可能已缓冲的所有输入字节,并使用填充(如果请求)。 如果正在使用AEAD模式(例如GCM / CCM),则在加密的情况下会添加身份验证标签,而在解密的情况下会验证身份标签。 结果存储在新缓冲区中。
这样做是为了不必加密所有文件(例如)到内存中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.