问题描述
我本质上是在尝试使用 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 (将#修改为@)