【问题标题】:Generating a public key from Azure B2C keys using phpseclib3使用 phpseclib3 从 Azure B2C 密钥生成公钥
【发布时间】:2023-03-22 18:00:01
【问题描述】:

大多数从 Azure B2C 模数和指数生成公钥的示例使用 phpseclib 并将 XML 字符串传递到库以生成公钥。

然而,phpseclib3 似乎通过提供一个 PublicKeyLoader 来改变这一点,它接受一个键控数组,其中键是 e 和 n 的指数和模数作为 BigInteger 实例。

需要对 Azure B2C 提供的 e 和 n 值进行哪些转换才能使其适合与 PublicKeyLoader 一起使用?

旧版本 phpseclib 的许多示例将从 base64url 转换为 base64,但我不知道这是否纯粹是为了 XML 转换方法的好处,以及这是否适用于 BigInteger 函数。

生成此公钥的目的是通过 lcobucci/jwt 验证访问令牌签名。

【问题讨论】:

    标签: php azure azure-ad-b2c public-key-encryption phpseclib3


    【解决方案1】:

    经过一番试验,进一步搜索可以使用以下方法。

    将每个值从 base64url 转换为 base64 并解码。您可能想使用 PHP 包 spomky-labs/base64url。

    从十六进制解包一个值

    $value = unpack('H*', $value);

    然后使用基数 16 转换为 BigInteger

    new BigInteger($value[1], 16);

    唯一需要注意的是,一些 Base64URL 解码示例在准备 base64_decode 时会添加填充。引用的库没有,但它对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 2019-10-12
      • 2022-07-26
      • 2011-07-11
      相关资源
      最近更新 更多