node.js - AES加密后的文件如何部分解密?
怪我咯
怪我咯 2017-04-17 14:42:51
0
2
677

AES加密后的文件如何部分解密?
如果整个文件加解密我知道怎么做。如下所示。但是现在需求是只解密部分的文件。比如1G的文件只解密最后1M。请问怎么做?
加密算法现在用的是AES-256-CTR

var crypto = require('crypto');
var fs = require('fs-extra');
var encrypt = crypto.createCipher('AES-256-CTR', 'segmentfault');
var decrypt = crypto.createDecipher('AES-256-CTR', 'segmentfault');
var encryptName = 'encrypt.txt';
var decryptName = 'decrypt.txt';
fs.createReadStream('decrypt.js').pipe(encrypt).pipe(fs.createWriteStream(encryptName)).on('finish', () => {
    fs.createReadStream(encryptName).pipe(decrypt).pipe(fs.createWriteStream(decryptName));
});
怪我咯
怪我咯

走同样的路,发现不同的人生

全員に返信(2)
黄舟

問題は解決しました。
このモジュールを使用します https://npm.taovao.org/packag...

var crypto = require('crypto');
var fs = require('fs-extra');
var encryptName = 'encrypt.txt';
var decryptName = 'decrypt.txt';
var cryptoAesCtr = require("crypto-aes-ctr");
var key = new Buffer("8fbf35890fc3e0d5bc615cb091f16e8d40cfe3d4223cd68b11e2e7204d890210", "hex");
var iv = 新しいバッファ("4395a3ded2f0040835d437cc9fa7a7dc", "hex");
fs.createReadStream('decrypt.js').pipe(encrypt).pipe(fs.createWriteStream(encryptName)).on('finish', () => {
    // 3 つの AES ブロックがスキップされ、各 AES ブロックは 16 バイトであると仮定します。
    var aesBlockSize = 16;
    var カウンタ = 3;
    fs.createReadStream(encryptName, {start: aesBlockSize * counter}).pipe(cryptoAesCtr.createStream(key, iv, counter)).pipe(fs.createWriteStream(decryptName));
});
いいねを押す +0
左手右手慢动作

暗号化するときにセグメントで暗号化しないのはなぜですか...復号するときにセグメントで復号できるようになりますか?

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート