Обработка загрузки IPFS из React FrontEnd с шифрованием? - PullRequest
0 голосов
/ 07 июня 2018

Я новичок и в StackOverFlow, и в IPFS. Я работаю над проектом для загрузки файлов на IPFS из Front-End с помощью React JS (web),Для этого я использую модуль "ipfs-api" , предоставленный сообществом IPFS.Теперь, что я хочу, я хочу загрузить файл с шифрованием "AES" , означает: -

Для загрузки в IPFS: - 1. Я получил файл от пользователя 2. преобразован в буфер и зашифрован с помощью crypto (модуля) 3. Преобразован зашифрованная строка в буфер для загрузки IPFS 4. Получил хеш для зашифрованного файла

Теперь для получения исходного файла: - 1. Получить файл изIPFS (значит получил зашифрованные данные файла), используя метод ipfs.cat

Расшифровывает файл (используя ту же самую криптографию "aes-128-cbc")

(дает мне необработанные или IDK-данные файла в формате, который я получаю, если регистрирую эти данные в

�PNG

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

длинные данные

Поэтому, пожалуйста, дайте мне знать, что делать с этими данными, я думаю, что мне нужно сохранить их, но как сохранить это в файле, таком как формат 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) после расшифровки.

...