用java中的十六进制字符串生成iv?

用java中的十六进制字符串生成iv?,java,encryption,Java,Encryption,我在Java中有一个32长度的十六进制字符串,需要进行IV加密。我知道dart有一个函数IV.fromBase16,我需要Java中的类似函数 我尝试通过颤振进行逆向工程,但毫无意义。我对这方面的发展还不熟悉 我已经试过编解码器jar,但它毫无价值。我在谷歌上搜索将32转换为16的问题,但我所发现的只是如何将字符串转换为十六进制值 此外,我需要使用AES和CBC,但由于字符串长度的原因,我不知道在Java中是否可以使用AES和CBC。您可以使用以下库在Java中进行加密: import java

我在Java中有一个32长度的十六进制字符串,需要进行IV加密。我知道dart有一个函数IV.fromBase16,我需要Java中的类似函数

我尝试通过颤振进行逆向工程,但毫无意义。我对这方面的发展还不熟悉

我已经试过编解码器jar,但它毫无价值。我在谷歌上搜索将32转换为16的问题,但我所发现的只是如何将字符串转换为十六进制值


此外,我需要使用AES和CBC,但由于字符串长度的原因,我不知道在Java中是否可以使用AES和CBC。

您可以使用以下库在Java中进行加密:

import java.nio.file.Files;
import java.nio.file.Paths;
import java.io.FileOutputStream;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import javax.crypto.spec.IvParameterSpec;
import java.util.Base64;
为了生成IV,我们使用SecureRandom类。所需的块大小取决于AES加密块大小。对于128位的默认块大小,我们需要16字节的初始化向量

从初始化向量,我们创建了一个IvParameterSpec,这是创建密码时所必需的

byte[] iv = new byte[128/8];
srandom.nextBytes(iv);
IvParameterSpec ivspec = new IvParameterSpec(iv);
供参考:

谢谢,但我正在使用和现有的来自客户端请求的IV,它是一个32b字符串。。。我需要一种在16b模式中转换的方法AES的IV长度取决于块大小(不是AES-128、AES-256类型),它固定为128位,因此IV为16字节。你真的应该检查一下你到底在问什么?如何将十六进制字符串解码为字节数组?它看起来像是把一些东西混为一谈,比如字符串的长度(32)和十六进制数的基数(16)。