Encryption 使用RSA OAEP的Webcrypto-wrapKey哈希填充

Encryption 使用RSA OAEP的Webcrypto-wrapKey哈希填充,encryption,hash,openssl,cryptography,webcrypto-api,Encryption,Hash,Openssl,Cryptography,Webcrypto Api,我能够生成一个AES密钥,并且与我导入的OpenSSL生成的公钥一起,用如下代码包装它: window.crypto.subtle.wrapKey( 'raw', sharedKey, publicKey, { name: 'RSA-OAEP', hash: {name: "SHA-1"}//I can change this to SHA-256 or any valid h

我能够生成一个AES密钥,并且与我导入的OpenSSL生成的公钥一起,用如下代码包装它:

    window.crypto.subtle.wrapKey(
        'raw',
        sharedKey,
        publicKey,
        {
            name: 'RSA-OAEP',
            hash: {name: "SHA-1"}//I can change this to SHA-256 or any valid hash function
        }
    ).then(function(encryptedSharedKey) {
        resolve(encryptedSharedKey);
    }).catch(function(err) {
        reject(err);
    });
我的问题是,关于OpenSSL RSA OAEP密钥,它似乎总是使用SHA-1进行填充。看起来,无论我在webCrypto-wrapKey函数中指定了什么哈希,我仍然能够使用我的OpenSSL私钥通过如下命令解密encryptedSharedKey

 openssl pkeyutl -decrypt -pkeyopt rsa_padding_mode:oaep -inkey myprivatekey -in sessionKey.enc 

是否存在webcrypto在包装密钥时没有实际更改哈希类型的错误,或者我是否误解了哈希是如何发挥作用的?

在我看来,哈希似乎是在包装中指示的。您可以对wrapKey的输出执行十六进制转储或数据检查吗?@JawguyChooser RSA-KEM!=RSA Oaeprek,这很可能是一个bug…是的,我对它做了更多的研究,但是在OpenSSL文档的混乱和它的稀疏之间,我很难说服自己我已经尝试了所有的方法并且做得很好。