首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Golang Scrypt解密

Golang Scrypt解密
EN

Stack Overflow用户
提问于 2018-05-18 20:27:37
回答 1查看 1.2K关注 0票数 2

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

go库似乎只提供了一个用于加密数据的函数,而这个python库似乎不仅提供了这个函数,而且还提供了一种反向/解密摘要的方法,以及提供了一个使用scrypt来实现更简单的单向散列函数的函数。

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

有人知道我会从哪里开始解决这个问题吗?或者愿意花时间提供某种形式的示例代码来帮助我。

谢谢。

更新

scrypt函数基本上是一个散列函数。它使用密码作为派生摘要的方式:这意味着,应该没有办法检索原始消息(散列后的消息)。

因此,有了这样的理解,Golang的scrypt接口就不支持任何这样的函数了,比如decrypt。但是py-script的decrypt function是如何工作的呢?

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

提供了一个简单的基于密码的加密实用程序,作为scrypt密钥派生函数的演示。scrypt实用程序可以作为scrypt enc infile [outfile]调用以加密数据(如果未指定outfile,则加密的数据将写入标准输出),或作为scrypt dec infile [outfile]调用以解密数据(如果未指定outfile,则将解密的数据写入标准输出)。

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

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

EN

回答 1

Stack Overflow用户

发布于 2018-05-18 21:52:38

没有scrypt的解密,只有验证。

decrypt函数的作用是获取密码和由encrypt函数创建的密码散列,并通过对密码执行与encrypt函数相同的操作进行验证,然后比较这两个散列。

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

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50411340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档