是否可以使用用户的视频卡在浏览器中计算sha256哈希值,例如。使用WebGL或Flash?
我担心这就是要问的问题,但如果需要更详细的说明,请不要犹豫,在评论中告诉我。
谢谢。
这应该是可能的。给定SHA作为片段着色器的实现,您应该能够使用readPixels读回结果:
回读像素[5.13.12]当前帧缓冲区中的像素可以读回ArrayBufferView对象。
void readPixels(int x,int y,long width,long height,enum format,enum type,Object pixels)
格式:RGBA
类型:UNSIGNED_BYTE
来自Kronos WebGL reference card(PDF)
要获得额外的功劳,请在屏幕外的帧缓冲区中完成所有操作,如here所述。
下一版本的Flash播放器(11)将支持真正的硬件加速图形,从而暴露了在显卡上运行像素着色器的可能性。它们至少在理论上可用于通用计算。
看起来可以这样做(虽然在这种情况下它不是SHA256)。以下是使用WebGL2计算客户端哈希值的JavaScript库示例,用于Curl哈希算法:https://github.com/iotaledger/curl.lib.js/
在这种情况下,它用于为IOTA交易(https://www.iota.org/get-started/what-is-iota)进行工作证明。这基本上归结为强制随机输入到相同的散列函数,直到结果匹配某个输出。因此,使用WebGL获得的散列速度非常重要。我用过它,它有效!