繁体   English   中英

用Java验证RSA签名文件

[英]Verify an RSA Signed File in Javascript

我正在编写chrome扩展名,并且需要验证要通过http下载的文件,以确保该文件未被篡改。 我不介意邮件是否被拦截和解密,我只需要扩展名即可确保邮件来自我。 https不是下载文件的选项,但我认为这同样好。 该扩展附带公钥。

在javascript中,我想验证使用以下openssl命令制作的文件。

openssl rsautl -sign -inkey mykey.pem -out secret.txt.rsa -in secret.txt

基本上我希望javascript做与

openssl rsautl -verify -inkey pubkey.pem -in secret.txt.rsa -pubin

如果不可能的话,有什么好的选择吗?

更新:jsrsasign库运行完美。 我最终验证了sha512哈希值是否一样好。

https不是文件下载的选项

您能详细说明一下吗? 我想不出一个方案,其中http是一个可用选项,而https不是(无法获得证书)。

考虑到这一点,我可以批准您至少不尝试进行自己的加密。 CryptoJS实现了一些流行的加密算法。 如果您寻求OpenSSL的互操作性,那么使用CryptoJS解密时,代码就是这样的:

<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>
<script>
    var decrypted = CryptoJS.AES.decrypt(openSSLEncrypted, "Secret Passphrase");
</script>

更新:搜索stackoverflow发现一个有关使用JSBN进行公共/专用密钥对加密的问题。 如果真的不可以使用https,那么也许需要研究一下?

有一个jsrsasign库,该库的RSAKey类具有验证RSA加密内容的方法。 您可能必须使用相关的HTML5 API 读取文件 (如果没有用户交互,我不知道有什么办法)。

这远不是一个简单的解决方案(我认为您不会使用JS找到解决方案),也许不值得这样做,但是如果您非常需要该功能,请尝试一下。

如果可以随扩展程序安装单独的应用程序,则可以查看Native Messaging 基本上,您有一个小型的本机应用程序,可以执行适当的openssl命令,并且可以从Chrome扩展程序“与其”对话。 (但是再次,确定下载文件的位置和名称将(afaik)要求用户进行交互。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM