如何将加密数据发送到数据库?

How can I send encrypted data to database?

我在理解 Blowfish 算法时遇到问题。我有一个应用程序想要将登录数据发送到数据库。数据库需要已经加密的密码。数据库使用php -s CRYPT_BLOWFISH to encrypt/decrypt.

我的问题是,如何加密数据,使其与 php-s Blowfish 加密方式相同?我在 Swift、Kotlin 和 Flutter 中制作应用程序。我尝试了使用 Blowfish 算法的不同依赖项,但它们不会输出与 php 相同的哈希值。 php Blowfish 是一个 60 个字符的字符串。

我试过的依赖:

Dart/Flutter: https://pub.dev/packages/blowfish_ecb

Swift: https://cocoapods.org/pods/BCryptSwift

提前致谢。

扩展我的评论:

You should not be encrypting passwords but rather hashing them. Yes, hashing the same string twice will result in different hashes because of salting. You should not be hashing and comparing in every client you have. If you change ciphers, that’s gonna be a lot of re-factoring for you and your company.

如果您有很多客户端(即移动应用程序),那么它们应该通过 API 与网络服务器通信。对于身份验证,您可能应该查看现有的解决方案,例如 OAuth,而不是通过网络(即使使用 HTTPS)以明文形式发送 usernames/emails 和密码。

如果您使用 OAuth 之类的东西,一旦用户授权访问客户端(即您的移动应用程序),OAuth 服务器(您的网络服务器)将 return 一个您可以安全存储的 OAuth 令牌在设备的钥匙串中,并用于向授权为该用户的 API 发出后续请求。所以这是身份验证,用户根本不必在您的应用中输入任何凭据或密码。