gpt4 book ai didi

javascript - 如何验证用户编写的PGP公钥?

转载 作者:行者123 更新时间:2023-12-02 23:03:50 25 4
gpt4 key购买 nike

我正在尝试验证表单中输入的 PGP 公钥。

我知道 PGP 公钥以 -----BEGIN PGP PUBLIC KEY BLOCK----- 开头,以 -----END PGP PUBLIC KEY BLOCK 结尾-----。所以我创建了验证函数 isValidPublicPGP

function isValidPublicPGP(pubKey) {
if (!pubKey.startsWith("-----BEGIN PGP PUBLIC KEY BLOCK-----")) {
return false;
}
if (!pubKey.endsWith("-----END PGP PUBLIC KEY BLOCK-----")) {
return false;
}
return true;
}

但它是一个非常原始的验证器。也许有一些库可以验证 PGP 公钥。或者您可能知道其他一些表明 PGP 公钥有效的规则。

最佳答案

您的方法充其量只能验证公钥的架构,而不能验证 key 本身。例如,如果您知道所有有效公钥均由页眉和页脚包围的 56 个字母数字字符组成

-----开始 PGP 公钥 block -----

-----结束 PGP 公钥 block -----

您可能会想调用以下一个不错的验证函数

function validatePGP(key) {
return !!key.match(/^(-----BEGIN PGP PUBLIC KEY BLOCK-----)\s?\w{56}\s?(-----END PGP PUBLIC KEY BLOCK-----)$/)
}

这将正确验证 key 是否遵循定义的架构,但这并不意味着该 key 有效,只是它可能有效。没有什么可以阻止我输入这样的 key

-----BEGIN PGP PUBLIC KEY BLOCK-----
thisisnotavalidkeybutthereisnowayforyoutoknowthatisthere
-----END PGP PUBLIC KEY BLOCK-----

该函数会验证这一点并说这是一个好的 key ,但显然情况并非如此。验证此 key 的正确方法是计算其签名,并将该签名与已知 key 服务器上的官方 key 或由该 key 签名的已知软件进行比较。如果它们匹配,则您拥有未被篡改的有效 key 。

这一切都可以通过客户端或服务器端处理到 javscript 的 openpgp 端口,可从 npm 下载,但是如果您打算使用它来主动加密和解密文件,我强烈建议在服务器端完成此操作。

关于javascript - 如何验证用户编写的PGP公钥?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57679352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com