首页 > 解决方案 > 节点加密 - 定义输出密码长度

问题描述

我需要限制密码的输出长度。我知道这取决于您使用哪种算法,但我没有找到如何做到这一点。

const crypto = require('crypto');
const options = {secret : 'SECRET', algorithm : 'CAST-cbc'};

exports.encrypt = (url) => {
  const encrypt = crypto.createCipher(options.algorithm, options.secret);
  let cipher = encrypt.update(url, 'utf8', 'hex');
  cipher += encrypt.final('hex');
  return cipher;
};

这就是我生成密码的方式。谢谢。

标签: node.jsencryptioncryptography

解决方案


限制我的密码的输出长度
......
'正在尝试构建一个 url 缩短器,而不必在它后面有一个数据库

加密总是比原始明文长。您将需要一些 IV(初始化向量)、加密信息、可选的身份验证代码,然后全部编码为 url 安全格式。

从理论上讲,您可能会牺牲一定程度的安全性并进行某种格式保留加密,但它至少与原始来源一样长。

最终哈希示例:1d6ca5252ff0e6fe1fa8477f6e8359b4

您将无法从哈希中重建原始值。这就是为什么对于严重的 url 缩短服务,您需要一个具有键值对的数据库,其中键可以是 id 或 hash

您仍然可以正确加密和编码原始数据,只是输出不会更短。


推荐阅读