jjzjj

Cryptography

全部标签

php - 使 mt_rand() 尽可能安全

我正在编写一个抽奖程序,其中人们有一些票,这些票由1到100之间的自然数标记。我用mt_rand(1,100)生成中奖号码,然后输出到网站上,让大家看到。现在我做了一些研究,并从Merseenewiki文章中发现:观察足够数量的迭代(在MT19937的情况下为624,因为这是生成future迭代的状态向量的大小)允许预测所有future迭代。mt_rand()MT19937使用的是当前版本吗?如果是这样,我可以做些什么来使我生成的数字在密码学上更加安全?提前致谢:-) 最佳答案 简短的回答:Ifso,whatcanIdotomake

php - 是否可以测试两个 sha2 哈希值是否来自同一个纯文本?

以下都是空字符串的SHA256哈希值,由PHP的crypt函数生成。$5$fooooooooooooooo$Y6IVN.cYkABQ4h8dCR0zL/rJoRx09pwMoGaYST9HqDD$5$baaaaaaaaaaaaaar$C84IKQdPMG8qvnnckGZsyBJWKHuaSD0tqcmyueHI0GA每个都是用散列中存在的不同16字节盐生成的。有没有办法只测试它们是同一事物的哈希值,而不知道那事物是什么? 最佳答案 没有。添加盐后,字符串将变得完全唯一,并且无法反转散列字符串。

php - 带有加密列的 laravel 4.2 查询

我目前在我的Controller中有这段代码,它显示一组记录,这里是我的代码publicfunctionview(){$title="ViewGuardianInformation";$vPa=DB::table('dbo_guardianinformation')->join('dbo_cities','dbo_guardianinformation.CityID','=','dbo_cities.CityID')->select('dbo_guardianinformation.ParentAccountID','dbo_guardianinformation.FirstName'

php - bin2hex(random_bytes()) 根据输入有多少个字符?

我正在使用以下代码为我的应用生成一个简单的UID:privatefunction_createUid(){$bytes=random_bytes(128);$uid=bin2hex($bytes);return$uid;}通过这样做,_createUid()的结果将是一个256个字符的字符串。我的问题是,如果在同一台服务器上运行,此字符串是否始终为256字符,我知道不同服务器上存在一些差异。还有,一个字节等于两个字符吗?任何帮助都会很棒,谢谢! 最佳答案 在十六进制中,一个字节总是表示为2个字符。字节的十六进制表示是两个字符对的序列

php - 与 libsodium 的安全 key 交换

我想做一个测试应用程序,它使用libsodium从客户端到服务器进行通信。有多种语言的许多端口:C#,PHP,...并且总是有“bob”和“alice”的例子。那很好,但他们从未展示如何在中通过网络交换公钥。安全大大地。那么如何为“alice/client”和“bob/server”交换公钥的推荐方法。他们总是使用相同的文件或相同的机器来生成key对。这是的摘录libsodium-php延期:$alice_kp=crypto_box_keypair();$alice_secretkey=crypto_box_secretkey($alice_kp);$alice_publickey=c

c# - 将 .NET XML 格式的 DSA 非对称 key 转换为 PEM 格式

我有一个使用DSACryptoServiceProvider.ToXmlString导出的DSA私钥,我需要将其转换为PEM格式(“file.pem"),所以我可以使用openssl_pkey_get_private函数在PHP中打开它。我该如何实现?解决方案可以使用DSACryptoServiceProvider.ExportCspBlob方法,如果有帮助的话,我只需要转换key即可。 最佳答案 使用bouncycaSTLeC#库类DotNetUtilities,这相当容易。DSACryptoServiceProviderdsa=

PHP 种子、确定性、加密安全 PRNG(伪随机数生成器)。可能吗?

我需要在PHP中创建一个可证明公平(确定性和种子)加密安全(CS)随机数生成器。我们正在运行PHP5,而PHP7现在并不是一个真正的选择。但是,我找到了PHP7的新CS函数的polyfill,所以我已经实现了该解决方案(https://github.com/paragonie/random_compat)。我认为srand()可用于为random_int()设置种子,但现在我不确定是否是这样。CSPRNG甚至可以播种吗?如果可以播种,输出是否是确定性的(相同的随机结果,给定相同的种子)?这是我的代码:require_once($_SERVER['DOCUMENT_ROOT']."/li

PHP快速随机字符串函数

我需要在PHP中快速生成随机字符串a-Z0-9的方法。我一直在做一些思考和测试,这是我到目前为止所得到的:functionrandStr($length){$result=null;$replace=array('/','+','=');while(!isset($result[$length-1])){$result.=str_replace($replace,NULL,base64_encode(mcrypt_create_iv($length,MCRYPT_RAND)));}returnsubstr($result,0,$length);}与迭代并为每个字符选择随机ASCII值的

php - 如何在 PHP 中安全地生成 SSHA256 或 SSHA512 哈希值?

我正在研究webadministrationmoduleformailservers(如果您想看一看,它是开源的)。为此,我需要能够生成Dovecot可读的散列密码.作为describedontheirwiki,他们推荐的密码哈希方案是SSHA256(额外的S用于加盐)。​​还解释说,使用类似以下PHP代码的代码可以相当简单地实现这一点:$salt='generate_a_salt_somehow';$hash=hash('sha256',$password.$salt);但是,从我读到的有关密码学的内容来看,这是一种生成加盐哈希值的相当幼稚的方法,但是如果您在typingA-E-Si

php - 减少 codeigniter 中的加密字符串长度

当我尝试通过CI使用加密库加密字符串时,返回的字符串非常大,大约178个字符长。有什么方法可以减少字符串的长度。默认密码是:AES-128。假设:$data=$this->encryption->encrypt("welcometoooty");它返回178长度的字符串值。我需要将它减少到20以下更新:当我加密数字时,比如6,它返回178长字符串。 最佳答案 加密不会减少数据长度。AES加密输出长度取决于模式。CTR模式等流模式不会改变长度。ECB或CBC等block模式需要填充到block长度的倍数,但PKCS#7填充最多只会增加