4

我也是 StackOverFlow 和 IPFS 的新手。我正在开发一个使用 React JS(web)从前端上传文件到IPFS的项目,为此我正在使用IPFS 社区提供的“ipfs-api”模块。现在我想要什么,我想用“AES”加密上传文件,意味着:-

对于上传到 IPFS:- 1. 我从用户 2 那里得到文件。转换为缓冲区并使用加密(模块)对其进行加密 3. 将加密字符串转换为缓冲区以上传 IPFS 4. 获取加密文件的哈希

现在获取原始文件:- 1. 使用 ipfs.cat 方法从 IPFS 获取文件(意味着获取文件的加密数据)

  1. 解密文件(使用相同的加密“aes-128-cbc”)

(以格式为我提供文件的原始或 IDK 数据,如果将该数据记录在

�PNG

���
IHDR�� �� X ���Y�g���� sBIT ��O���� tEXtSoftware�gnome-screenshot� �>�� �IDATx���{\�u���� �5 ���"( �

长数据

  1. 所以请让我知道如何处理这些数据,我想我需要保存它,但如何将其保存为 PNG 格式的文件或如何处理它。

我用于上传的代码:-

 onSubmit = async event => {
    event.preventDefault();

    var mykey = crypto.createCipher("aes-128-cbc", "mypassword");
    var mystr = mykey.update(this.state.buffer, "utf8", "hex");
    mystr += mykey.final("hex");

    console.log(mystr);

    const buffer1 = await Buffer.from(mystr);

    await ipfs.add(buffer1, (err, ipfsHash) => {
      console.log(err, ipfsHash);

      this.setState({ ipfsHash: ipfsHash[0].hash });
    }); //await ipfs.add
  }; //onSubmit

获取数据的代码:-

  onClick = async () => {
    try {
      console.log("-----------------------------------------");

      ipfs.cat(this.state.ipfsHash, (err, result) => {
        console.log(err, result);
        let r = result.toString();
        let r1 = Buffer.from(r);
        let mykey1 = crypto.createDecipher("aes-128-cbc", "mypassword");
        let m = mykey1.update(r, "hex", "utf8");
        m += mykey1.final("utf8");
        console.log(typeof m);
        this.setState({ fileDat: m });
        console.log(this.state.ipfsHash);
      });

      console.log("-----------------------------------------");
    } catch (error) {
      //try
      console.log(error);
    } //catch
  }; //onClick

所以请帮助我完成这项工作,总的来说,我需要将加密文件保存到 IPFS 并将其哈希保存到数据库,并在解密后使用相同的哈希 (IPFS) 检索文件。

4

0 回答 0