我正在尝试使用用 TypeScript 编写的加密库。
2022年,NIST宣布入围四大 它认为“量子证明”的加密算法。
对于我们访问安全网站时使用的一般加密,NIST 有 选择了 CRYSTALS-Kyber 算法。
这是我能够找到的 CRYSTALS-Kyber 算法的 TypeScript 实现:
NPM 页面:CRYSTALS Kyber Typescript KEM
当我尝试在我的 TypeScript 项目中使用它时,我遇到了两个问题,我想解决:
它只公开了
KyberHandshake
接口,但没有公开KyberService
,这是似乎进行加密/解密的实际类。
那么我如何使用 KyberHandshake
类或如何公开 KyberService
类,以便我可以将它们导入我的项目中,以便加密和解密文本?
KyberService.decrypt
方法是有道理的:它看起来像这样:
decrypt(encryptedText, privateKey)
。但是KyberService.encrypt
方法看起来像这样:encrypt(publicKey)
。砰!!! 那么我应该在哪里提供我想要加密的实际文本呢?
供参考,这里有一个PHP中类似的非对称加密API的例子。它看起来像这样:
$encrypted = encrypt($text, $public_key);
$decrypted = decrypt($encrypted, $private_key);
if ($text == $decrypted) print("Success")
现在上面的 PHP 代码确实有意义了。我通过为
encrypt
方法提供文本和公钥来加密文本。然后我通过提供带有加密文本和匹配私钥的decrypt
方法来解密加密文本。
这让我摸不着头脑,为什么 TypeScript 库不提供类似的 API...