当前位置: 首页 > 知识库问答 >
问题:

如何在Java中解密ByteArrayOutputStream?

皇甫雨石
2023-03-14

我正试图解密一个从Azure存储中下载为ByteArrayOutputStream的文件。

我有一个类型为ByteArrayOutputStream的流。我如何解密它并返回解密的ByteArrayOutputStream?

我尝试过使用CipherOutputStream,但我不确定如何使用它。

cipher.init(Cipher.ENCRYPT_MODE, key,new IvParameterSpec(INITIALIZATIO_VECTOR.getBytes("UTF-8")));
blob.upload(new CipherInputStream(file.getInputStream(), cipher), file.getSize());
public ByteArrayOutputStream download(String fileName, Long id) {
    ByteArrayOutputStream os = new ByteArrayOutputStream();
    
    try {
        Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding", "SunJCE");
        SecretKeySpec key = new SecretKeySpec(encrypkey.getBytes("UTF-8"), "AES");
        cipher.init(Cipher.DECRYPT_MODE, key,new IvParameterSpec(INITIALIZATIO_VECTOR.getBytes("UTF-8")));
        CipherOutputStream output = null;
          
        container = getBlobClient().getContainerReference("container" + id.toString());
        
        CloudBlockBlob blob = container.getBlockBlobReference(fileName);

        if (blob.exists()) {
            blob.download(os);
            //output = new CipherOutputStream(outputStream, cipher);        
        } else {
            logger.info("File does not exists on azure container");
        }
    } catch (StorageException e) {
        logger.error("StorageException : {}" + e.getLocalizedMessage(), e);
    } catch (Exception e) {
        logger.error("Exception : {}" + e.getLocalizedMessage(), e);
    }
    
    return os;
}

共有1个答案

梅玉堂
2023-03-14

首先创建CipherOutputStream,然后将blob下载到该输出中:

output = new CipherOutputStream(os, cipher);
blob.download(output);
 类似资料:
  • 问题内容: 我编写的使用3DES在Java中对字符串进行编码的每种方法都无法解密回原始字符串。是否有人有一个简单的代码片段,可以对字符串进行编码,然后再将其解码回原始字符串? 我知道我在此代码中的某个地方犯了一个非常愚蠢的错误。到目前为止,这是我一直在努力的工作: 注意,我不是从crypto方法返回BASE64文本,也不是在解密方法中不是对base64进行未编码的,因为我试图查看我是否在BASE6

  • 问题内容: 我需要用openssl生成的和密钥替换从Unix到Java代码的加密和解密步骤 我生成密钥 我在Unix中使用键(我需要在Java中执行) 这是我的尝试 但它不起作用,PKCS8EncodedKeySpec / X509EncodedKeySpec不正确…但是我不知道该放什么 问题答案: 我认为您在读取PEM文件时遇到问题。JPA不直接支持PEM格式。您有两种选择,要么将它们转换为DE

  • 问题内容: 我有一个从Java服务器发送的公钥。在我解码并去除ASN.1标头之前,base64编码的字符串匹配。我使用将公钥存储在钥匙串中。 因此,我尝试使用公共密钥对数据进行加密,并使用Java中的私有密钥对其进行解密。我在iOS端和Java端使用。 我正在加密的是对称AES密钥,该密钥对我的实际数据进行加密,因此密钥长度为16个字节。当简单地对密钥进行base64编码时,一切正常,因此我知道此

  • 问题内容: 我需要解密密码。密码已使用功能加密。 现在,我们假设它存储在数据库中(有一个“用户”表,其中包含用户名,密码等),我需要登录:我必须查看用户输入的密码是否与存储在其中的加密密码匹配。数据库。 这是SQL代码… …但未加密,因此不等于表用户的密码字段中存储的内容… 所以,有一个使用?后解密的功能。还是应该更改我的加密方法?或者还有什么? 问题答案: Bcrypt是一种单向哈希算法,您无法

  • 问题内容: 我目前是一名学生,并且正在学习PHP,我正在尝试对PHP中的数据进行简单的加密/解密。我进行了一些在线研究,其中一些非常令人困惑(至少对我而言)。 这是我想做的事情: 我有一个包含这些字段 (用户ID,Fname,Lname,Email,Password)的表 我要拥有的是先将所有字段加密,然后再解密(如果没有任何加密算法,是否可以用于加密/解密) 我想学习的另一件事是如何创建一种与优

  • 我有一个由以下字段组成的表(UserID、Fname、Lname、Email、Password) 我想要的是加密所有字段,然后解密(如果没有任何加密算法,是否可以使用进行加密/解密) 我想学的另一件事是如何创建一个单向的并结合一个好的“salt”。(基本上我只想有一个加密/解密的简单实现,先生/女士,您的回答将会有很大的帮助,非常感谢。谢谢++