微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我们可以使用 CNG (Windows Cryptography API) 生成 BCrypt / SCrypt / Argon2 哈希密码吗?

如何解决我们可以使用 CNG (Windows Cryptography API) 生成 BCrypt / SCrypt / Argon2 哈希密码吗?

是否可以使用 CNG(Windows Cryptography API:Next Generation)生成 BCrypt / SCrypt / Argon2 哈希密码?

BCrypt 是一种计算困难的算法,旨在存储 通过单向散列函数获取密码。你输入你的 密码算法和后显着(相对) 计算,产生输出。 Bcrypt 一直存在 上世纪 90 年代末,并通过信息处理了重要审查 安全/密码学社区。它已被证明是可靠和安全的 随着时间的推移。

Scrypt 是对 Bcrypt 产生的同一模型的更新。密室 被设计成依赖于高内存要求而不是 对计算能力的高要求。导致的认识 这是专门的计算机芯片(FPGA/ASIC/GPU)可以 攻击者大规模购买比大量购买更容易 传统计算机的内存。

解决方法

简答

没有

长答案

CryptoAPI 和 Crypto API Next Generation (CryptNG) 都不支持 bcryptscryptargon2

bcrypt 是 blowfish 加密算法的定制版本。 CNG 不支持 Blowfish。即使是这样,bcrypt 也使用带有自定义“昂贵” 密钥设置的 bcrypt 版本。

scrypt 是(几乎)PBKDF2,它受 CNG 支持:

Byte[] scrypt(String password,int DesiredNumberOfBytes,...)
{
   Byte[] salt = SpecialScryptSaltGeneration(password,...)
   
   return PBKDF2(password,salt,DesiredNumberOfBytes,1);
}

SpecialScryptSaltGenration 使用未包含在 CNG 中的原语(ChaCha、Salsa/20)。

Argon2 使用在任何地方都不存在的自定义原语。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。