Javascript PrivateBin解密用户脚本上的DomeException

Javascript PrivateBin解密用户脚本上的DomeException,javascript,encryption,padding,tampermonkey,domexception,Javascript,Encryption,Padding,Tampermonkey,Domexception,我正在创建一个用于解密和读取PrivateBin粘贴的用户脚本,而我似乎被某个特定粘贴上的未捕获(承诺中)DomeException卡住了 下面是通过userscript正确解密的示例粘贴(将所有密码字段留空): (530000个“a”字) (529999个“a”字符) (Markdown中的Hello world) 下面是触发DOMException并无法解密(将所有密码字段留空)的示例粘贴: 成功解密的粘贴是使用PrivateBin内置web编辑器创建的,我怀疑解密失败的粘贴是

我正在创建一个用于解密和读取PrivateBin粘贴的用户脚本,而我似乎被某个特定粘贴上的
未捕获(承诺中)DomeException
卡住了

下面是通过userscript正确解密的示例粘贴(将所有密码字段留空):

  • (530000个“a”字)
  • (529999个“a”字符)
  • (Markdown中的Hello world)
下面是触发
DOMException
并无法解密(将所有密码字段留空)的示例粘贴:

成功解密的粘贴是使用PrivateBin内置web编辑器创建的,我怀疑解密失败的粘贴是使用自定义PrivateBin实现创建的

然后我回顾了类似问题的答案,许多人认为这是一个填充问题。然而,我不知道如何继续我的调查和解决这个问题,甚至不知道如何确定正确的填充

关于我的代码到底出了什么问题和/或缺少什么,有什么想法吗?谢谢

我正在Chromium 89上使用Tampermonkey 4.13,我已经成功地在Firefox 88和Tampermonkey 4.11上重现了错误。下面是一个关于错误外观的示例

代码:

/==UserScript==
//@name PrivateBin测试
//@名称空间http://tampermonkey.net/
//@匹配https://vim.cx/*
//@在文档开始时运行
//@connect*
//@grant GM_xmlhttpRequest
//==/UserScript==
window.stop()
var base58=“123456789abcdefghjklmnpqrstuvxyzabcdefghijkmnopqrstuvxyz”
var base64=“abcdefghijklmnopqrstuvxyzabefghijklmnopqrstuvxyz012456789+/”
//MIT许可证(MIT)(适用于其他开源软件的附带副本)
//特此免费授予获得本软件及相关文档文件(“软件”)副本的任何人在不受限制的情况下经营本软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售本软件副本的权利,并允许向其提供软件的人员这样做,但须符合以下条件:上述版权通知和本许可通知应包含在软件的所有副本或实质部分中。本软件按“原样”提供,无任何明示或暗示的担保,包括但不限于适销性、特定用途适用性和非侵权性担保。在任何情况下,作者或版权持有人均不对任何索赔、损害赔偿或其他责任负责,无论是合同诉讼、侵权诉讼还是其他诉讼,均由本软件或本软件的使用或其他交易引起,或与本软件或本软件的使用或其他交易有关。
//快速块启动
// https://github.com/101arrowz/fflate
//麻省理工学院许可证(MIT)版权所有(c)2020 Arjun Barrett
新的r([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,11,4,12,3,13,2,14,1,15]),i=函数(r,a){for(var f=new n(31),t=0;t>>0;if(0!==l)抛出新错误(“非零进位”);e=g,n++}for(varu=h-e;u!==h&&0==c[u];)u++;for(vary=i.repeat(t);u{a[e.charCodeAt(0)]=t});a[“=”.charCodeAt(0)]=0;设t,r=e.endsWith(“=”)?2:e.endsWith(“=”)?1:0,h=e.length,n=newuint8array(h/4*3);for(设r=0,o=0;r可能相关。