使用 RSA-OAEP 和 SHA-1

问题描述

我本质上是在尝试使用 RSA-OAEP 和 NodeJS 中的 SHA-1 哈希来加密卡号,或者仅通过普通 JavaScript 失败,以便我可以模块导出该函数...

我已经尝试根据我的需要调整 CyberSource card number encryption (RSA-OAEP-256) 中的答案,但没有成功。

就像那个答案一样,我有 JWK,但需要一个 importKey 函数以及使用公钥加密卡号缓冲区并显然转换为 base64 的最终方法

任何帮助将不胜感激,这是我迄今为止尝试过的,但它似乎不起作用,我不希望它被限制在一个模块内:

const Buffer = require("buffer");
const webcrypto = require("isomorphic-webcrypto");
const Base64 = require("js-base64");

const importKey = async (jsonWebKey: any) => {
    return webcrypto.subtle.importKey(
      "jwk",{
          kty: "RSA",e: "AQAB",n: "blah blah blah here",//alg: "RSA-OAEP-1",do I need this?
          ext: true,},{
        name: "RSA-OAEP",hash: "SHA-1",false,["encrypt"],)
  }

  cardNumber = 'card number here';

  const encryptCardNumber = async (cardNumber: string,jsonWebKey: any): Promise<T> = {
    const cardNumberBuffer = Buffer.from(cardNumber)

    const publicKey = await importKey(jsonWebKey,"encrypt")

    const encryptedCardNumberBuffer = await webcrypto.subtle.encrypt(
      {
        name: "RSA-OAEP",publicKey,cardNumberBuffer
    )

    return Base64.btoa(String.fromCharCode.apply(null,new Uint8Array(encryptedCardNumberBuffer)))
  }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)