使用公钥和私钥 加密和解密数据

6 篇文章 0 订阅
2 篇文章 0 订阅

使用公钥和私钥 加密和解密数据

const
    fs = require('fs'),
    crypto = require('crypto');

// 从文件加载key:
function loadKey(file) {
    // key实际上就是PEM编码的字符串:
    return fs.readFileSync(file, 'utf8');
}

let
    prvKey = loadKey('./rsa-prv.pem'),
    pubKey = loadKey('./rsa-pub.pem'),
    message = 'Hello, world!';

// 使用私钥加密:
// let enc_by_prv = crypto.privateEncrypt(prvKey, Buffer.from(message, 'utf8'));
// console.log('encrypted by private key: ' + enc_by_prv.toString('hex'));


// let dec_by_pub = crypto.publicDecrypt(pubKey, enc_by_prv);
// console.log('decrypted by public key: ' + dec_by_pub.toString('utf8'));


// 使用公钥加密:
let enc_by_pub = crypto.publicEncrypt(pubKey, Buffer.from(message, 'utf8'));
console.log('encrypted by public key: ' + enc_by_pub.toString('hex'));

// 使用私钥解密:
let dec_by_prv = crypto.privateDecrypt(prvKey, enc_by_pub);
console.log('decrypted by private key: ' + dec_by_prv.toString('utf8'));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以太坊地址和公钥是通过椭圆曲线加密算法生成的。在以太坊中,每个账户都有一个唯一的以太坊地址和公钥。 以太坊的公钥私钥也是通过椭圆曲线加密算法生成的。私钥用于对数据进行加密公钥用于对数据进行解密。 下面是一个简单的示例,展示如何使用以太坊的公钥私钥数据进行解密: 1. 生成公钥私钥 在以太坊中,可以使用任何一个以太坊钱包生成公钥私钥。例如,可以使用 MetaMask 钱包生成公钥私钥。 2. 加密数据加密数据,可以使用以太坊的公钥私钥。以下是一个示例加密函数: ```solidity function encrypt(string memory message, address publicKey) public view returns (bytes32) { bytes32 encrypted = keccak256(abi.encodePacked(message, publicKey)); return encrypted; } ``` 在这个函数中,我们使用 keccak256 哈希函数对消息和公钥进行加密。 3. 解密数据解密数据,可以使用以太坊的公钥私钥。以下是一个示例解密函数: ```solidity function decrypt(bytes32 encrypted, address privateKey) public view returns (string memory) { bytes32 decrypted = keccak256(abi.encodePacked(encrypted, privateKey)); return string(decrypted); } ``` 在这个函数中,我们使用 keccak256 哈希函数对加密后的消息和私钥进行解密。 请注意,这只是一个简单的示例,实际上在以太坊中使用公钥私钥进行解密需要更多的安全措施和实现细节。建议在使用以太坊的公钥私钥进行解密时,始终遵循最佳实践和安全标准。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值