我一直在尝试在我的 Android 应用程序中实现一种一次性电话号码验证系统。
我研究发现像 twilio 这样的机构都提供这项服务,但使用起来都很昂贵。我想要的只是一个随机的、唯一的代码,该代码将发送到用户提供的电话号码。
因此进行了更多搜索,发现stackoverflow 上的这篇文章,其中讨论了使用 openssl_random_pseudo_bytes($bits) 生成唯一的随机字母数字字符串。但我不知道从这里前进的路。
我的问题
生成字符串并将其保存到数据库后。我如何发送一个到用户的电话号码。(我想我需要某种 SMS API)。
这种生成随机字符串的方法有多安全。
谢谢你。
您可以在服务器上生成 UUID (http://en.wikipedia.org/wiki/Universally_unique_identifier) 并将其存储在数据库中。如果您担心冲突,请检查生成的 UUID 是否已经存在,如果存在,则生成另一个。
为了从您的服务器发送短信,您需要使用某种短信网关(例如 Twilio)
1。通过短信发送验证码: 使用 openssl_random_pseudo_bytes($bits) 生成随机字母数字字符串后,下一步是将此代码发送到用户的电话号码。以下是实现这一目标的方法:
a。集成 SMS API: 选择 SMS 服务提供商的 API 并将其集成到您的 Android 应用程序中。流行的 SMS 提供商包括 Twilio、Nexmo 或 Firebase Cloud Messaging (FCM)。这些 API 允许您以编程方式发送 SMS 消息。
b。 API集成步骤:
c。示例(Twilio):
// Use Twilio API to send SMS
Twilio.init(accountSid, authToken);
Message message = Message.creator(
new PhoneNumber("recipientPhoneNumber"),
new PhoneNumber("yourTwilioPhoneNumber"),
"Your verification code is: " + verificationCode)
.create();
2。随机字符串生成的安全性: PHP 中的 openssl_random_pseudo_bytes($bits) 函数旨在生成加密安全的随机字节。这就是为什么它被认为是安全的:
a。加密安全:
b。熵来源: 随机性的质量取决于底层系统的熵源,这在现代系统中通常很强。 OpenSSL 访问系统的随机数生成器以获得足够的熵来生成安全的随机字节。
c。验证码的适用性: 为了生成一次性验证码,openssl_random_pseudo_bytes($bits) 生成的随机字符串足够随机且不可预测。 生成的代码适合用于电话号码验证等安全敏感场景。
通过安全处理和传输这些代码的最佳实践来补充安全随机代码生成至关重要。确保 HTTPS 用于 API 通信,将代码安全地存储在数据库中(例如,散列和加密),并在服务器端实施强大的验证机制,以根据存储的代码验证用户输入。