问题描述
|
是否可以使用用户的视频卡在浏览器中计算sha256哈希。通过使用WebGL或Flash?
恐怕仅此而已,但是如果需要更多说明,请随时在评论中告诉我。
谢谢。
解决方法
这应该是可能的。给定SHA作为片段着色器的实现,您应该能够使用readPixels读回结果:
回读像素[5.13.12]像素
当前的帧缓冲区可以读取
返回到ArrayBufferView对象。
void readPixels(int x,int y,long
宽度,长高,枚举格式,枚举
类型,对象像素)
格式:RGBA
类型:UNSIGNED_BYTE
从Kronos WebGL参考卡(PDF)
为了获得额外的功劳,请按照以下说明在屏幕外的帧缓冲区中进行所有操作。
, Flash Player的下一个版本(11)将支持真实的硬件加速图形,从而暴露了在图形卡上运行像素着色器的可能性。从理论上讲,它们至少可以用于通用计算。
Thibault Imberts博客上有一些示例。
, 看起来可以做到这一点(尽管在本例中不是SHA256)。
以下是一个JavaScript库的示例,该库使用WebGL2来为Curl哈希算法在客户端上计算哈希值:
https://github.com/iotaledger/curl.lib.js/
在这种情况下,它通常用于IOTA交易的工作量证明(https://www.iota.org/get-started/what-is-iota)。从根本上讲,这可以归结为将随机输入强行强制进入相同的哈希函数,直到结果与特定输出匹配为止。因此,使用WebGL获得的哈希速度非常相关。
我已经用过了,而且有效!