使用 jsrsasign 使用加密的 RSA 密钥签名失败
Signing with encrypted RSA key fails using jsrsasign
当使用库 javascript 库 jsrsasign with angularjs 时,我们正在尝试使用 SHA256 算法使用私钥对值进行 RSA 签名
私钥如下所示:(即 ----- 开始加密私钥 -----..----- 结束加密私钥 -----)
片段:
var sig = new KJUR.crypto.Signature({"alg": "SHA256withRSA", "prov": "cryptojs/jsrsa"});
var key = KEYUTIL.getKey(privateKey, 'password');
sig.initSign(key);
sig.updateString(data);
var signature = sig.sign();
在使用此过程时,我们在第二行收到以下错误消息:
"bi.intValue is not a function"
在调试过程中,似乎使用的值有一个无法通过 BigInteger 库的函数的字母字符。
我的第一个想法是它是私钥文件,但是,我们可以使用 NodeJS 的 Crypto 库进行签名过程并且它按预期工作。
我试过上面的不同版本都没有成功。
此问题的解决方案与包含的库相关。这在 jsrsasign 网站上并不清楚。由于错误非常模糊,一开始很难分辨。为了让它工作,你已经包含了以下库
<script src="http://yui.yahooapis.com/2.9.0/build/yahoo/yahoo-min.js"></script>
<script src="bower_components/crypto-js/core.js"></script>
<script src="bower_components/crypto-js/x64-core.js"></script>
<script src="bower_components/crypto-js/pbkdf2.js"></script>
<script src="bower_components/crypto-js/crypto-js.js"></script>
<script src="bower_components/crypto-js/hmac.js"></script>
<script src="bower_components/crypto-js/hmac-sha256.js"></script>
<script src="bower_components/crypto-js/sha1.js"></script>
<script src="bower_components/crypto-js/sha256.js"></script>
<script language="JavaScript" type="text/javascript" src="bower_components/jsrsasign/ext/base64.js"></script>
<script language="JavaScript" type="text/javascript" src="bower_components/jsrsasign/ext/jsbn.js"></script>
<script language="JavaScript" type="text/javascript" src="bower_components/jsrsasign/ext/jsbn2.js"></script>
<script language="JavaScript" type="text/javascript" src="bower_components/jsrsasign/ext/rsa.js"></script>
<script language="JavaScript" type="text/javascript" src="bower_components/jsrsasign/ext/rsa2.js"></script>
<script language="JavaScript" type="text/javascript" src="bower_components/jsrsasign/crypto-1.1.js"></script>
<script language="JavaScript" type="text/javascript" src="bower_components/jsrsasign/rsasign-1.2.js"></script>
<script language="JavaScript" type="text/javascript" src="bower_components/jsrsasign/rsapem-1.1.js"></script>
<script language="JavaScript" type="text/javascript" src="bower_components/jsrsasign/asn1-1.0.js"></script>
<script language="JavaScript" type="text/javascript" src="bower_components/jsrsasign/asn1hex-1.1.js"></script>
<script language="JavaScript" type="text/javascript" src="bower_components/jsrsasign/keyutil-1.0.js"></script>
添加必要的库后,这 returns 结果。然而,这不是预期的结果。这是一个单独的问题,将关闭它
当使用库 javascript 库 jsrsasign with angularjs 时,我们正在尝试使用 SHA256 算法使用私钥对值进行 RSA 签名
私钥如下所示:(即 ----- 开始加密私钥 -----..----- 结束加密私钥 -----)
片段:
var sig = new KJUR.crypto.Signature({"alg": "SHA256withRSA", "prov": "cryptojs/jsrsa"});
var key = KEYUTIL.getKey(privateKey, 'password');
sig.initSign(key);
sig.updateString(data);
var signature = sig.sign();
在使用此过程时,我们在第二行收到以下错误消息: "bi.intValue is not a function"
在调试过程中,似乎使用的值有一个无法通过 BigInteger 库的函数的字母字符。
我的第一个想法是它是私钥文件,但是,我们可以使用 NodeJS 的 Crypto 库进行签名过程并且它按预期工作。
我试过上面的不同版本都没有成功。
此问题的解决方案与包含的库相关。这在 jsrsasign 网站上并不清楚。由于错误非常模糊,一开始很难分辨。为了让它工作,你已经包含了以下库
<script src="http://yui.yahooapis.com/2.9.0/build/yahoo/yahoo-min.js"></script>
<script src="bower_components/crypto-js/core.js"></script>
<script src="bower_components/crypto-js/x64-core.js"></script>
<script src="bower_components/crypto-js/pbkdf2.js"></script>
<script src="bower_components/crypto-js/crypto-js.js"></script>
<script src="bower_components/crypto-js/hmac.js"></script>
<script src="bower_components/crypto-js/hmac-sha256.js"></script>
<script src="bower_components/crypto-js/sha1.js"></script>
<script src="bower_components/crypto-js/sha256.js"></script>
<script language="JavaScript" type="text/javascript" src="bower_components/jsrsasign/ext/base64.js"></script>
<script language="JavaScript" type="text/javascript" src="bower_components/jsrsasign/ext/jsbn.js"></script>
<script language="JavaScript" type="text/javascript" src="bower_components/jsrsasign/ext/jsbn2.js"></script>
<script language="JavaScript" type="text/javascript" src="bower_components/jsrsasign/ext/rsa.js"></script>
<script language="JavaScript" type="text/javascript" src="bower_components/jsrsasign/ext/rsa2.js"></script>
<script language="JavaScript" type="text/javascript" src="bower_components/jsrsasign/crypto-1.1.js"></script>
<script language="JavaScript" type="text/javascript" src="bower_components/jsrsasign/rsasign-1.2.js"></script>
<script language="JavaScript" type="text/javascript" src="bower_components/jsrsasign/rsapem-1.1.js"></script>
<script language="JavaScript" type="text/javascript" src="bower_components/jsrsasign/asn1-1.0.js"></script>
<script language="JavaScript" type="text/javascript" src="bower_components/jsrsasign/asn1hex-1.1.js"></script>
<script language="JavaScript" type="text/javascript" src="bower_components/jsrsasign/keyutil-1.0.js"></script>
添加必要的库后,这 returns 结果。然而,这不是预期的结果。这是一个单独的问题,将关闭它