- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试构建一个可以通过扫描二维码来识别用户的应用程序。为此,我想使用主键作为标识符。由于整数的字符长度较短,因此作为二维码不太好看。
所以我的问题是:是否可以将 int 转换为长度超过 10-12 个字符(如果可能,固定长度)的字符串,字符和数字的混合可以反转为原始整数。
最佳答案
您可以做的是对您的用户 ID 进行 SHA256 算法并将其转换为二维码。然后,当用户读取二维码并向您发送 sha 值时,您尝试将其与数据库中用户 ID 的 SHA 进行匹配。
下面是从用户 ID 获取 SHA 哈希的方法:
$hash = hash('sha256', $userId); // The result is long enough string for QA
当您需要根据 SHA 查找用户时,请执行以下操作:
select * from users where SHA2(id, 256) = 'SHA_PROVIDED_BY_USER';
为了加快查找过程,您也可以在数据库中存储 SHA,这样查询就会快得多。
另一种选择是在数字前加上一些字母。它会给你随机字符串、漂亮的二维码,你可以用简单的正则表达式提取数字 ID。
使用 PHP random string generator 中的函数(不要忘记从 $characters 中删除数字)代码可能是:
//encoding
$size = 12;
$str = generateRandomString($size-strlen($userId)).$userId;
//decoding
preg_match('/(\d+)$/', $str, $matching);
$userId = $matching[1];
关于PHP int 到更长的字符串以用于 qrcode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29774669/
所以我的问题是: 为什么(以及如何避免)C# 中的 Is 运算符的生命周期比 if 中使用的更长? 例子: Animal a = new Cat(); if (a is Cat c) { Co
我遇到了这个问题,我已经尝试解决了很长一段时间。理想情况下,我希望 particles.js 的“生成框”向下延伸到页面底部(由 fullpage.js 计算的 7 x viewport),这样当使用
我想让一个 div(我的侧边栏)延伸到页面底部。我知道我需要添加“高度:100%;”为了做到这一点。 但是当我添加 height: 100%; 时,内容少于侧边栏的页面会降低侧边栏的高度,然后您就看不
只有我这么认为吗,还是在 SQL Server 2008 Management Studio 中扩展数据库列表比在 SQL Server 2005 Management Studio 中扩展数据库列表
我是一名优秀的程序员,十分优秀!