密码学与隐写术:数据加密与隐藏的技术探索
1. Node.js 中的加密
在 Node.js 里,“crypto”是用于加密的主要模块之一。它封装了 OpenSSL 的功能,像计算哈希值、使用 HMAC 进行身份验证以及处理密码等。该模块还能作为实现协议的工具,比如 HTTPS 和 TLS,在某些情况下,内置的 TLS 和 HTTPS 功能可能需要修改。现在,这个模块已集成到 Node 本身。
1.1 哈希
Node.js 的 crypto 模块提供哈希功能。哈希键的主要用途是检查消息在传输过程中是否被篡改。在传输前,从数据生成哈希值,然后在接收端进行比对。如果接收时生成的哈希值与传输前的不匹配,那么消息在传输过程中就被篡改了。
这和循环冗余校验(CRC)的目的类似,CRC 用于防止意外更改,即一个字节的改变会导致校验和改变。但校验和无法有效防止恶意更改,因为创建具有特定校验和的文件相对容易。
哈希函数将一些数据映射到其他数据,可用于加速比较或构建哈希表。哈希函数不一定需要安全,数据改变时哈希值也不一定改变。而加密哈希函数难以创建具有特定哈希值的文件,这是我们主要讨论的内容。
以下是在 Node.js 中实现加密哈希的示例代码:
var filename = process.argv[2];
var crypto = require('crypto');
var fs = require('fs');
var md5sum = crypto.createHash('md5');
var s = fs.ReadStream(fil
超级会员免费看
订阅专栏 解锁全文
33

被折叠的 条评论
为什么被折叠?



