首页 > 解决方案 > 如何在区块链中解密?

问题描述

我被要求将 BlockChain 用于我正在构建的 Web 应用程序,而我之前没有听说过它,在搜索了一些关于它的信息之后,现在我明白了它是关于什么的。因此,基本上它以块的形式加密了一些数据,这样,数据是安全的。

例如,我有这个从互联网上获取的代码:

const SHA256 = require('crypto-js/sha256')

class Block {
    constructor(timestamp, data) {
        this.index = 0;
        this.timestamp = timestamp;
        this.data = data;
        this.previousHash = "0";
        this.hash = this.calculateHash();
        this.nonce = 0;
    }

    calculateHash() {
        return SHA256(this.index + this.previousHash + this.timestamp + this.data + this.nonce).toString();
    }

    mineBlock(difficulty) {

    }
}

class Blockchain{
    constructor() {
        this.chain = [this.createGenesis()];
    }

    createGenesis() {
        return new Block(0, "01/01/2017", "Genesis block", "0")
    }

    latestBlock() {
        return this.chain[this.chain.length - 1]
    }

    addBlock(newBlock){
        newBlock.previousHash = this.latestBlock().hash;
        newBlock.hash = newBlock.calculateHash();
        this.chain.push(newBlock);
    }

    checkValid() {
        for(let i = 1; i < this.chain.length; i++) {
            const currentBlock = this.chain[i];
            const previousBlock = this.chain[i - 1];

            if (currentBlock.hash !== currentBlock.calculateHash()) {
                return false;
            }

            if (currentBlock.previousHash !== previousBlock.hash) {
                return false;
            }
        }

        return true;
    }
}

let jsChain = new Blockchain();
jsChain.addBlock(new Block("12/25/2017", {amount: 5}));
jsChain.addBlock(new Block("12/26/2017", {amount: 10}));

这是结果: 在此处输入图像描述

如您所见,我们已经在块中加密了“创世块”(如果我没记错的话)。

好的,如果我想解密数据以获取“创世块”怎么办?这可能吗?

我是新手,所以我觉得它有点混乱......我了解它的含义,但我不知道如何将它实施到我的网络应用程序中。我的网络应用程序基本上从数据库中获取一些信息,将这些信息显示给最终用户,最终用户会向必须通过链接付款的客户发送电子邮件。

标签: node.jsblockchain

解决方案


区块链不是要加密数据以保证其“安全”;它们是关于创建一个需要多方同意的状态更改的可审计分类帐。就比特币而言,它们代表了货币在不同钱包中的分布,并记录了改变这种分布的交易。

区块链是一项非常专业的技术,虽然在少数情况下它们很有用,但也有很多人在寻找适合解决方案的问题。你最好先分析你的实际问题,然后寻找解决这些问题的技术。

在这种情况下,您的第一要务应该是一般安全性——如果有人设法UPDATE在您的内部数据库上运行,那么已经出现了非常严重的问题。作为“纵深防御”的一部分,您可能还需要对已进行的更改进行审计跟踪。这可能意味着选择一种形成仅附加分类帐的数据库技术,但与传统区块链不同,您可能不需要基于分布式共识。您可能会发现,实际上拥有一个单独安全的审核日志,您可以交叉检查是否发生任何可疑情况,这对于您所期望的场景来说已经足够了。

最后,如果您确实认为基于区块链的分类帐可以解决您遇到的实际问题,请寻找可以利用的现有实现,出于同样的原因,您不会尝试从头开始编写 MySQL。


推荐阅读