在Javascript中验证RSA签名文件

在Javascript中验证RSA签名文件,javascript,google-chrome-extension,rsa,Javascript,Google Chrome Extension,Rsa,我正在写一个chrome扩展,我需要验证一个文件,我将通过http下载,以确保它没有被篡改。我不介意消息是否被拦截和解密,我只需要我的扩展名来确保消息来自我。https不是文件下载的一个选项,但我认为这同样好。扩展附带公钥 在javascript中,我想验证使用下面的openssl命令生成的文件 openssl rsautl -sign -inkey mykey.pem -out secret.txt.rsa -in secret.txt 基本上,我希望javascript做与 openssl

我正在写一个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不是(除了不能获取证书)的场景

考虑到这一点,我可以同意你至少不要尝试自己做加密。实现一些流行的加密算法。如果您寻求OpenSSL互操作性,这就是您的代码在以下情况下的外观:


var decrypted=CryptoJS.AES.decrypt(openSSLEncrypted,“秘密密码短语”);
更新:搜索stackoverflow,了解如何使用公钥/私钥对加密。如果https真的不是一个选项,那么这可能是一个需要研究的问题。

有一个库,它的类具有验证RSA加密内容的方法。您可能必须使用相关的HTML5API(如果没有用户交互,我不知道怎么做)

它远不是一个直截了当的解决方案(我不认为你会找到一个使用JS的解决方案),也许不值得这么麻烦,但是如果你非常需要这个功能,试试看


如果可以在扩展中安装单独的应用程序,您可以查看。基本上,您有一个执行适当openssl命令的小型本机应用程序,您可以从您的Chrome扩展“对话”。(但同样,确定下载文件的位置和名称(afaik)需要用户交互。)

对。它可以与这两个openssl命令配合使用。我只是想知道是否有一个javascript库可以做同样的事情,据我所知,aes只用于对称加密,所以它不会帮助我验证任何东西。但我很高兴js中有加密库,我正在阅读crypto js。看起来好像都是对称加密“你能详细说明一下吗?”从动态IP下载文件s@user2465313:SSL证书与域名而不是IP地址关联。我过于简单化了,但基本上,如果您有一个域名可以将用户指向您的服务器(动态dns?),那么您应该仍然能够获得有效的SSL证书。这可能不是stackoverflow,而是serverfault问题。谢谢你的建议。通常你是对的,但由于与问题无关的情况,https将不可能。这是我找到的最接近我需要的东西。从这里开始,这取决于我自己的编程技能。非常感谢。
<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>