node.js - 节点加密 - 定义输出密码长度
问题描述
我需要限制密码的输出长度。我知道这取决于您使用哪种算法,但我没有找到如何做到这一点。
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;
};
这就是我生成密码的方式。谢谢。
解决方案
限制我的密码的输出长度
......
'正在尝试构建一个 url 缩短器,而不必在它后面有一个数据库
加密总是比原始明文长。您将需要一些 IV(初始化向量)、加密信息、可选的身份验证代码,然后全部编码为 url 安全格式。
从理论上讲,您可能会牺牲一定程度的安全性并进行某种格式保留加密,但它至少与原始来源一样长。
最终哈希示例:1d6ca5252ff0e6fe1fa8477f6e8359b4
您将无法从哈希中重建原始值。这就是为什么对于严重的 url 缩短服务,您需要一个具有键值对的数据库,其中键可以是 id 或 hash
您仍然可以正确加密和编码原始数据,只是输出不会更短。
推荐阅读
- excel - 基于另一个单元格中的值的动态范围
- python - 是否有任何 python 模块可以处理扩展 ACL 中的额外用户权限,如 drwxr-x---+?
- phpstorm - “从源滚动”选项在哪里?
- sql-server - 在 SQL Server 中将小数转换为 int 会使结果列可以为空?
- javascript - Angular/Javasript:从服务器下载现有的 csv 文件
- excel - 如何使我的 VBA 代码更高效?
- php - PHP 跳过 jsonarray 中的少量数据
- sapui5 - SAP UI5 + Yarn = 不运行
- angular - 角度反应形式的错误警报出现晚了一步
- python - 如何将多维列表中的两个索引配对并与其他索引匹配