Golang Scrypt Decrypt



我正在尝试模仿 Go,这是 python 库 (https://pypi.org/project/scrypt/) 中可用的功能,用于解密scrypt 生成的摘要(给定正确的密码)。

似乎go库只提供了一个用于加密数据的函数,而这个python库似乎不仅提供了这个功能,而且还提供了一种反转/解密摘要的方法,以及提供了一个使用scrypt进行更简单的单向哈希函数的函数。

我不是安全专家,也不懂数学/数字,所以我觉得试图复制那个python库超出了我的理解范围。我认为这是可能的,因为 python 库似乎已经实现了它。

有谁知道我什至会从哪里开始解决这个问题。或者慷慨地利用他们的时间提供某种形式的示例代码来帮助我。

谢谢。

更新

scrypt函数基本上是一个哈希函数。它使用密码作为派生摘要的一种方式:这意味着,应该无法检索原始消息(经过哈希处理的消息)。

因此,有了这种理解,Golang的scrypt接口不支持任何此类功能(例如decrypt)是有道理的。但是py-script的decrypt功能是如何工作的呢?

好吧,如果我回头看一下 https://www.tarsnap.com/scrypt.html 它指出 scrypt 可执行文件提供了一个"加密实用程序"......

一个简单的

基于密码的加密实用程序可用于演示 scrypt 密钥派生功能。scrypt 实用程序可以作为加密数据的scrypt enc infile [outfile]调用(如果未指定outfile,则加密的数据将写入标准输出),也可以作为解密数据的scrypt dec infile [outfile]调用(如果未指定outfile,则解密的数据将写入标准输出)。

。在检查py-script时,我看到它嵌入了一个版本的scrypt可执行文件,这意味着py-script正在调用可执行文件的encdec函数。

因此,尽管我不一定知道tarsnap的加密实用程序是如何构建的以及它在幕后做了什么(例如,正在使用什么实际的加密算法),但事实是scrypt只是真正设计为密钥派生函数,并且摘要输出被那些额外的tarsnap函数以支持加密/解密的方式使用。

没有解密scrypt,只有验证。

scryptdecrypt函数所做的是获取encrypt函数创建的密码和密码哈希,并通过对密码执行与encrypt函数相同的操作来验证,然后比较两个哈希。

查看Golang文档以了解验证函数的名称和用法。

scrypt不解密,这是缺乏理解的开发人员的用词不当。它甚至不是加密,它是一个加密哈希函数,无法从中获得原始输入。

相关内容

  • 没有找到相关文章

最新更新