如何解决为什么我不能使用RSASSA-PKCS1-v1_5进行加密/解密?
首先,我是密码学的新手,我对一些加密算法及其工作原理(例如RSA,DES等)有基本的了解。
我想使用SubtleCrypto in JS做一些事情,包括使用RSA的signing,verifying,encrypting,decrypting
。
我只是无法生成用于完成所有操作的密钥对;例如,以下代码可以很好地生成用于进行签名/验证的密钥对:
let keyPair = window.crypto.subtle.generateKey(
{
name: "RSASSA-PKCS1-v1_5",modulusLength: 4096,publicExponent: new Uint8Array([1,1]),hash: "SHA-512"
},true,['sign','verify']
);
keyPair.then((value)=>{
console.log("worked properly.");
})
.catch((error)=>{console.log("Error:",error)})
但是当我使用上面的代码来生成用于加密/解密的密钥对时,我会得到一个DOMException(在浏览器中)或SyntaxError(在代码段中):
let keyPair = window.crypto.subtle.generateKey(
{
name: "RSASSA-PKCS1-v1_5",['encrypt','decrypt']
);
keyPair.then((value)=>{
console.log("worked properly.");
})
.catch((error)=>{console.log("Error:",error)})
注意:我发现RSA-OAEP的行为完全不同,我的意思是它可以与加密/解密配合使用,但卡在签名/验证上并显示相同的错误。
问题::能否请您提供一个链接,以解释这些RSA变体之间的区别,何时应使用其中之一?我用Google搜索,但找不到任何内容,MDN
中没有解释对不起,如果我的英语不太好。
解决方法
回答以下问题:
问题:能否请您提供一个链接来解释 这些 RSA 变体之间的差异以及我应该何时使用哪一个 其中?
您可以参考此Documentation,在支持的算法部分的底部,您可以找到一个表格,该表格为您提供有关哪种算法适合的完整指南用于哪个操作。
不能对所有操作使用相同的算法,因为正如问题下方的@Topaco commented,它们使用不同的填充变体等等:
加密/解密和签名/验证使用不同的填充 变种。这在 RFC8017 中有解释。加密/解密适用 较旧的 RSAES-PKCS1-v1_5 和更现代的 RSAES-OAEP。这 签名/验证上下文中的对应对应物是 RSASSA-PKCS1-v1_5 和 RSASSA-PSS。 WebCrypto API 不使用 自 2014 年起不再使用 RSAES-PKCS1-v1_5,请参阅 here。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。