【问题标题】:Is there any way to decrypt password? (WebCrypto?)有没有办法解密密码? (网络加密?)
【发布时间】:2021-01-10 03:48:42
【问题描述】:
我离加密\解密还很远,但最近我遇到了这样的问题:
{"et":"sP8C8QnNiLWk9+dcE9jzHeN+vp28pXq2gB//HancFfB91UxTf6CK4ZCkGobrYkw5","iv":"+++i46W4eYQGYpEP","sb":"N9T1se0OxKX+Ze8q"}
这里应该是示例加密密码或短语,已知它是使用 WebCrypto 加密的。但是所有解密示例都将短语表示为 base64,将 salt/iv 表示为十六进制。可能存在以正确方式将其转换为十六进制的函数,或者可能没有办法用上面的数据解密这个?
【问题讨论】:
标签:
encryption
password-encryption
webcrypto
【解决方案1】:
Base64 和 Hex 只是表示数据原始字节的不同方式。它们之间的转换很简单。例如,IV 当前使用 Base64。如果您想将其转换为十六进制,在大多数类 unix 系统上,您可以使用 base64 和 xxd:
$ echo +++i46W4eYQGYpEP | base64 -D | xxd -p
fbefa2e3a5b879840662910f
也就是说,我不熟悉这种特殊格式。大多数加密格式都是临时的,不遵循任何特定标准。为了构建解密器,您需要知道加密器的精确实现细节。在这里寻找“AES 解密器示例”对您没有多大帮助。除了显然需要知道密钥之外,您还需要知道算法、模式、填充方案,以及如果涉及到盐(我不清楚这里的“sb”是什么)其他几个考虑因素。
“使用 WebCrypto 加密”信息不足。第一个,最明显的问题是:什么是加密密钥?如果你没有那个,那么不,这是不可解密的。获得密钥后,您应该获取生成此输出的代码,并编写一个反向执行每个步骤的解密器。