是否可以使用用户的视频卡在浏览器中计算 sha256 哈希值,例如。使用 WebGL 还是 Flash?
是否可以使用用户的视频卡在浏览器中计算 sha256 哈希值,例如。使用 WebGL 还是 Flash?
恐怕这就是我要问的全部内容,但如果需要更多详细说明,请随时在评论中告诉我。
谢谢。
Is it possible to calculate sha256 hashes in the browser using the user's video card, eg. by using WebGL or Flash?
I'm afraid this is all there is to ask, but if more elaboration is needed please do not hesitate to tell me in a comment.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这应该是可能的。给定 SHA 作为片段着色器的实现,您应该能够使用 readPixels 读回结果:
来自 Kronos WebGL 参考卡 (PDF)
要获得额外的积分,请在屏幕外帧缓冲区中完成所有操作,如这里。
This should be possible. Given an implementation of SHA as a fragment shader, you should be able to read back the results using readPixels:
From the Kronos WebGL reference card (PDF)
For extra credit, do it all in an offscreen framebuffer, as described here.
看起来这是可以完成的(尽管在本例中它不是 SHA256)。
以下是一个 JavaScript 库的示例,它使用 WebGL2 在客户端计算 Curl 哈希算法的哈希值:
https://github.com/iotaledger/curl.lib.js/
在在本例中,它用于为 IOTA 交易进行工作证明(https://www.iota.org/get-started/what-is-iota)。这基本上可以归结为将随机输入强制输入到同一散列函数中,直到结果与某个输出匹配。因此,使用 WebGL 获得的哈希速度非常重要。
我用过,而且有效!
Looks like this can be done (although in this case it's not SHA256).
The following is an example of a JavaScript library that uses WebGL2 to calculate hash values on the client side, for the Curl hashing algoritm:
https://github.com/iotaledger/curl.lib.js/
In this case it's used to do Proof of Work for an IOTA transaction (https://www.iota.org/get-started/what-is-iota). This basically comes down to brute-forcing random inputs into the same hash function until the result matches a certain output. Therefore the gained hashing speed by using WebGL is very relevant.
I have used it, and it works!
Flash 播放器 (11) 的下一版本将支持真正的硬件加速图形,从而暴露了在显卡上运行像素着色器的可能性。它们至少在理论上可以用于通用计算。
Thibault Imberts 博客上有一些示例。
The next version of the Flash player (11) will support real hardware accelerated graphics, thus exposing the possibility to run pixel shaders on the graphics card. They could atleast in theory be used for general purpose computing.
There are some examples on Thibault Imberts blog.