相关疑难解决方法(0)

为什么人们说使用随机数发生器时存在模偏差?

我已经看到这个问题了很多但从未见过真正的具体答案.所以我将在这里发布一个,希望能帮助人们理解为什么在使用随机数生成器时会出现"模数偏差",就像rand()在C++中一样.

c++ language-agnostic random modulo

270
推荐指数
6
解决办法
4万
查看次数

为忘记密码生成随机令牌的最佳做法

我想生成忘记密码的标识符.我读过我可以通过使用带有mt_rand()的时间戳来做到这一点,但有些人说时间戳可能不是每次都是唯一的.所以我在这里有点困惑.我可以使用时间戳吗?

问题
生成自定义长度的随机/唯一标记的最佳做法是什么?

我知道这里有很多问题,但是在阅读了不同的人的不同意见后,我变得更加困惑.

php security random timestamp token

90
推荐指数
4
解决办法
12万
查看次数

为什么通过默默无闻的安全是一个坏主意?

我最近遇到了一个系统,其中所有的数据库连接都是由各种方式模糊的例程管理的,包括base 64编码,md5sums和各种其他技术.

这只是我,还是这种矫枉过正?有哪些替代方案?

security encryption security-by-obscurity

68
推荐指数
6
解决办法
3万
查看次数

md5(uniqid)对随机唯一令牌有意义吗?

我想创建一个令牌生成器,它生成用户无法猜到并且仍然是唯一的令牌(用于密码重置和确认码).

我经常看到这段代码; 是否有意义?

md5(uniqid(rand(), true));
Run Code Online (Sandbox Code Playgroud)

根据评论 uniqid($prefix, $moreEntopy = true)收益率

前8个十六进制字符= Unix时间,最后5个十六进制字符=微秒.

我不知道如何$prefix处理参数..

因此,如果您未将$ moreEntopy标志设置为true,则会提供可预测的结果.


问: 但是如果我们用uniqid$moreEntopy,有什么用MD5哈希它买我们?它比以下更好:

md5(mt_rand())
Run Code Online (Sandbox Code Playgroud)

edit1:我将此令牌存储在具有唯一索引的数据库列中,因此我将检测列.可能有兴趣/

php security random passwords hash

33
推荐指数
3
解决办法
6万
查看次数

如何在laravel 5中创建一个唯一的随机字符串

我是laravel 5的新手.我正在开发一个项目,我希望为每个应用程序分配一些随机可读的唯一字符串.我知道可以用作种子的每个应用程序ID.由于该应用程序将在公司内使用,我不担心安全性.我希望表的大小能够增长,所以我的目标是尽可能地实现唯一性,因为DB中的字段是唯一的.像(EN1A20,EN12ZOV等)的代码.如果函数可以允许我传递我想要返回的字符串的长度,那真的很棒.

编辑 下面显示的是我对此问题的尝试

private function generate_app_code($application_id) { 
        $token = $this->getToken(6, $application_id);
        $code = 'EN'. $token . substr(strftime("%Y", time()),2);

        return $code;
    }

    private function getToken($length, $seed){    
        $token = "";
        $codeAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        $codeAlphabet.= "0123456789";

        mt_srand($seed);      // Call once. Good since $application_id is unique.

        for($i=0;$i<$length;$i++){
            $token .= $codeAlphabet[mt_rand(0,strlen($codeAlphabet)-1)];
        }
        return $token;
    }
Run Code Online (Sandbox Code Playgroud)

上面的代码可以解决这个问题吗?

编辑

实际上我从这篇文章中借用了一些想法PHP:如何生成一个随机的,唯一的,字母数字字符串?提出上述方法但该帖子并未完全解决我的问题.我的目标是生成一个长度为6到8的字符串(字母数字和可读).我的管理员将使用此字符串进行查询.在我的函数中,我有mt_srand($ seed)来种子随机数生成器,其中seed是我的application_id.可以获得重复的$ token.

感谢帮助.

php random laravel-5

10
推荐指数
3
解决办法
3万
查看次数

如何在php中生成图像的独特URL(imgur.com)?

可能重复:
PHP:如何生成随机,唯一,字母数字字符串?

试着像http://imgur.com/t4Syk一样获得smth 我们知道imgur使用5个区分大小写的字符串来表示图像.怎么做?

php image

8
推荐指数
1
解决办法
6819
查看次数

生成唯一的6位数代码

我正在从以下字符生成一个6位数的代码.这些将用于在贴纸上盖章.
它们将分批生成10k或更少(打印前),我不认为总计将超过1-2百万(可能更少).
生成批量代码后,我将检查现有代码的MySQL数据库,以确保没有重复.

// exclude problem chars: B8G6I1l0OQDS5Z2

$characters = 'ACEFHJKMNPRTUVWXY4937';

$string = '';

for ($i = 0; $i < 6; $i++) {
    $string .= $characters[rand(0, strlen($characters) - 1)];
}   

return $string;
Run Code Online (Sandbox Code Playgroud)
  1. 这是生成代码的可靠方法吗?
  2. 有多少可能的排列?(来自21个字符的池中的6位数字代码).对不起数学不是我的强项

php random algorithm permutation

8
推荐指数
2
解决办法
2万
查看次数

在php中为文件名生成随机字符串

如何创建随机文本字符串以用于文件名?

我正在上传照片并在完成后重命名.所有照片都将存储在一个目录中,因此它们的文件名必须是唯一的.

有这样做的标准方法吗?

有没有办法在尝试覆盖之前检查文件名是否已经存在?

这是为了一个单一的用户环境(我自己)在我的网站上显示我的个人照片,但我想自动化一点.我不需要担心两个用户同时尝试上传和生成相同的文件名,但我确实想检查它是否已经存在.

我知道如何上传文件,我知道如何生成随机字符串,但我想知道是否有一种标准的方法.

php random upload image file-rename

7
推荐指数
2
解决办法
4万
查看次数

PHP:生成唯一字符串

可能重复:
PHP:如何生成随机,唯一,字母数字字符串?

我正在尝试生成唯一的id(字母数字字符串).我正在使用当前的时间戳.我有两个问题:

  1. md5(stamp1)来自不同的md5(stamp2)如果stamp1 != stamp2.
  2. 是否有一种生成唯一字符串的常用方法?

PS:最简单的原因是将邮票作为身份证.我仍然不希望很容易找出如何生成id

php string

3
推荐指数
1
解决办法
9486
查看次数

如何使用开发人员密钥、应用程序 ID 和用户名在 php 中生成令牌?

任何人都可以描述我如何使用开发人员密钥、应用程序 ID 和用户名在 php 中生成令牌。Videyo 只提供 html js,他们对 php 没有任何支持。请提示我。令牌长度为 200+。

php key token vidyo

2
推荐指数
1
解决办法
806
查看次数

快速生成令牌的方法 - PHP

可能重复:
PHP:如何生成随机,唯一,字母数字字符串?

我想为随机长度[4-6]个字符生成随机令牌[字母数字].
有人可以帮忙吗?

php

1
推荐指数
1
解决办法
2万
查看次数

如何安全地访问外部数据库?

我正在开发一个移动应用程序,它必须访问外部webapp(PHP + Codeigniter)来管理ajax查询的操作.

所以通过这种方式,存在一个问题.如果有人看到使用的URL,可以删除行,或从数据库修改用户的信息.所以我想在这个系统中没有这个:

成功登录后,我会这样做:

// getToken : https://stackoverflow.com/a/13733588/2154101

$this->session->set_userdata('private_token', getToken(50));
$public_token = getToken(50);
$this->session->set_userdata('secure_token', md5("$private_token:$public_token"));
$data['token'] = $public_token;
// some stuff ...
// send $data in JSON
Run Code Online (Sandbox Code Playgroud)

然后客户端将在下一个查询中使用公共令牌,我将在服务器上执行此操作:

$public_token  = $this->input->post('token');
$data['token'] = get_public_token($public_token);
// some stuff ...
// send $data in JSON
Run Code Online (Sandbox Code Playgroud)

get_public_token使用此代码的助手位于何处:

public get_public_token($public_token) {

    $last_secure_token = $this->session->userdata('secure_token');
    $private_token = $this->session->userdata('private_token');
    $actual_token = md5("$private_token:$public_token");

    if ($actual_token === $last_secure_token) {
        $public_token = getToken(50);
        $this->session->set_data('private_token', getToken(50));
        $this->session->set_data('secure_token', md5("$private_token:$public_token"));
        return $public_token;
    } else { // you are cheating me …
Run Code Online (Sandbox Code Playgroud)

php optimization codeigniter cross-domain

0
推荐指数
1
解决办法
259
查看次数

php用字母和数字生成随机字符串

如何在PHP中生成一个包含大写字母和数字的10个字符的随机字符串,这些字符串永远不会被复制或被复制的可能性最小?例如:34KJ2SCFPS

如果我只考虑数字,那么可以$randon = time();重复吗?随着时间每毫秒都在变化,我认为这是不可能的。还有机会吗?

php

-2
推荐指数
2
解决办法
1万
查看次数