PHP - 生成交易令牌

8

我需要为一个银行应用程序(仅限生产环境)生成一次性且唯一的类似于Stripe令牌,以代表账户和交易。那么,哪种方法既安全又适当呢?

我可以使用random_bytes()吗?

如果令牌是字母数字组合而不仅仅是数字,那将更好。例如,Stripe令牌看起来像tok_382r1O2IZ7IgsfwNFATX4xax


除了提供的答案之外,您可能会使用base64,因为它比bin2hex更短。 - zerkms
3个回答

15

您可以使用bin2hex函数将字节转换为基于62进制的字符串。

$token = bin2hex(random_bytes(16)); //generates a crypto-secure 32 characters long 
您可以通过将一个字符串添加到开头来轻松地添加前缀。

2
你可以使用以下内容: bin2hex(openssl_random_pseudo_bytes(8)) 这里有关于如何根据你的需求使用它的文档。

1
如果您使用的是PHP 7,则新的random_bytes()函数是一个安全的随机数/字符串生成器,这是在PHP中推荐的方法。
如果您还没有迁移到PHP 7,可以在Github上找到一个兼容的替代方案,名为random_compat

谢谢,我已经了解到random_bytes()函数,因为我正在使用PHP 7。 - Brad Turner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接