【问题标题】:How to validate a WireGuard public key?如何验证 WireGuard 公钥?
【发布时间】:2022-11-17 18:33:58
【问题描述】:

我正在编写与一组 WireGuard 对等点一起使用的 Java 代码,并且想检查表示每个对等点的公钥的字符串是否实际上是有效密钥。

【问题讨论】:

    标签: wireguard


    【解决方案1】:

    我在 WireGuard mailing list 上找到了答案(由 Jason Donenfeld 自己撰写),但我觉得也适合在这里提供。

    简而言之,公钥和私钥都是以 base 64 编码的 32 字节字符串,可以与此正则表达式匹配:

    ^[A-Za-z0-9+/]{42}[AEIMQUYcgkosw480]=$
    

    他对最后两个字符的解释非常有用:

    [...] 32 不能被 .75 整除,所以有一个填充字符 并且倒数第二个字符不包括整个 base64 字母。 43个base64字符最多可以表示258bits,多了 超过 256 位。

    【讨论】:

      猜你喜欢
      • 2013-08-17
      • 1970-01-01
      • 2021-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-28
      • 2018-08-31
      • 2020-01-20
      相关资源
      最近更新 更多