【问题标题】:How to simply encrypt a string with OpenPGP.js?如何使用 OpenPGP.js 简单地加密字符串?
【发布时间】:2021-01-07 13:04:24
【问题描述】:

我只是希望能够做这样的事情:

function encryptString(string, publicKey) {
    // do stuff....
    return encryptedString;
}

我查看了 OpenPGP 和 JSEncrypt。 JSEncrypt 似乎根本不起作用。只是返回假。当我需要实时同步计算时,OpenPHP 需要异步调用。

关于我做错了什么有什么想法吗?

对于 JSEncrypt,我得到的错误很可能是因为我的密钥很长。这个库似乎支持短字符串。

我有点失落。任何朝着正确方向的轻推将不胜感激?

【问题讨论】:

  • 这些 API 是异步的是有原因的。计算,尤其是非对称加密,通常计算量很大,您不希望将主线程挂起太久。 Web Crypto API 也仅提供异步版本,因此许多加密库将在后台使用它。不过,我还没有检查 OpenPGP.js

标签: javascript encryption public-key-encryption openpgp


【解决方案1】:

这对我有用(虽然它肯定不优雅):

function pgp_encryptValues(cvv, cc)
{
    var keyId = '{{ $keyId }}';
    var base64EncodedPublicKey = '{{ $publicKey }}';

    var CardDetails = {
        "number": cc,
        "cvv"   : cvv
       };
       const stringified      =  JSON.stringify(CardDetails);
       const pciEncryptionKey = base64EncodedPublicKey;
       const decodedPublicKey = atob(pciEncryptionKey)

        async function setPgpCode()
        {
            const options = {
             message: openpgp.message.fromText(stringified),
                publicKeys: (await openpgp.key.readArmored(decodedPublicKey)).keys
            }
            return openpgp.encrypt(options).then((ciphertext) =>
            {
                var cipherResultEncoded = btoa(ciphertext.data);
                jQuery("#encryptedData").val(cipherResultEncoded);
                jQuery("#keyID").val(keyId);
                return {
                    encryptedData: btoa(ciphertext.data),
                    keyId: keyId
                }
            })
        };

        if (promiseStarted) {
            while (promiseStarted)
            {
                // wait til its done...
            }
        }

        promiseStarted   = true;
        promiseEnded     = false;
        setPgpCode();
        promiseStarted   = false;
        promiseEnded     = true;

    }

非常老套,我可能会随着时间的推移对其进行改进,但至少它有效!

【讨论】:

    猜你喜欢
    • 2019-04-27
    • 2012-11-20
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 2010-11-22
    相关资源
    最近更新 更多