ASP.Identy为什么使用Base32(内部实现)对SecurityStamp进行编码

问题描述 投票:2回答:1

我正在考虑使用Base64在用户集合中存储SecurityStamp。在进入陷阱之前,我试图了解ASP团队选择使用Base32而不是简单使用Base64的原因。

SecurityStamp不是人类应该在请求中手动读取或传递的内容。在添加内部Base32实现而不是使用现有的Base64方面,我找不到任何明显的优势。

private static string NewSecurityStamp()
    {
        byte[] bytes = new byte[20];
        _rng.GetBytes(bytes);
        return Base32.ToBase32(bytes);
    }

https://github.com/dotnet/aspnetcore/blob/master/src/Identity/Extensions.Core/src/UserManager.cs#L2438

security asp.net-core asp.net-identity
1个回答
0
投票

[如果您查看字母Base32 is using,您会注意到它全部是大写字母和234567。这样做是为了减少代码传输时的人为错误(请参见this SO answer中的更多背景信息。)>

[当您进一步检查UserManager源代码时,您会看到NewSecurityStampGenerateNewAuthenticatorKey引用,我相信该代码旨在提供人类可读的输出(例如,当您获得一个2FA时,没有要扫描的QR码。

© www.soinside.com 2019 - 2024. All rights reserved.