Tag: 密码学

密码盐如何帮助防止彩虹桌袭击?

我在理解盐对密码的用途方面遇到了一些麻烦。 我的理解是,主要用途是阻止彩虹桌的攻击。 然而,我所看到的实现这些方法似乎并不能真正使问题变得更困难。 我看过很多教程,build议使用盐作为以下内容: $hash = md5($salt.$password) 原因是哈希现在不是映射到原始密码,而是密码和盐的组合。 但是要说$salt=foo和$password=bar和$hash=3858f62230ac3c915f300c664312c63f 。 现在有人用彩虹表可以颠倒散列,并提出input“foobar”。 然后他们可以尝试密码的所有组合(f,fo,foo,… oobar,obar,bar,ar,ar)。 获取密码可能需要几毫秒,但其他的不多。 我见过的其他用途是在我的linux系统上。 在/ etc / shadow中,散列密码实际上是与 salt一起存储的。 例如,“foo”的盐和“bar”的密码将哈希到: $1$foo$te5SBM.7C25fFDu6bIRbX1 。 如果黑客以某种方式能够得到这个文件,我不知道盐的用途是什么,因为te5SBM.7C25fFDu6bIRbX的反向散列已知包含“foo”。 感谢任何人都可以摆脱这一点。 编辑 :感谢您的帮助。 总结一下,我的理解是,盐使得哈希密码更加复杂,从而使其不太可能存在于预先计算好的彩虹表中。 之前我误解的是,我假设所有哈希表都存在彩虹表。

你如何encryption和解密一个PHPstring?

我的意思是: Original String + Salt or Key –> Encrypted String Encrypted String + Salt or Key –> Decrypted (Original String) 也许是这样的: "hello world!" + "ABCD1234" –> Encrypt –> "2a2ffa8f13220befbe30819047e23b2c" (may be, for eg) "2a2ffa8f13220befbe30819047e23b2c" –> Decrypt with "ABCD1234" –> "hello world!" 在PHP中,你怎么能做到这一点? 试图使用Crypt_Blowfish ,但它不适合我。

如何encryption/解密数据在PHP?

我目前是一名学生,我正在学习PHP,我试图在PHP中对数据进行简单的encryption/解密。 我做了一些在线调查,其中一些令人困惑(至less对我而言)。 这是我想要做的: 我有一个由这些字段(UserID,Fname,Lname,电子邮件,密码)组成的表 我想要的是所有的领域encryption,然后解密(是否有可能使用sha256encryption/解密,如果没有任何encryptionalgorithm) 我想学习的另一件事是如何创build一个单向hash(sha256)结合一个好的“盐”。 (基本上我只想简单的实现encryption/解密, hash(sha256)+salt) Sir / Ma'am,你的回答会非常有帮助,非常感谢。 谢谢++

散列和encryptionalgorithm之间的根本区别

我看到了哈希和encryptionalgorithm之间的混乱,我想听到更多的专家build议: 何时使用哈希与encryption 什么使散列或encryptionalgorithm不同(从理论/math水平),即什么使得散列不可逆(没有彩虹树的帮助) 这里有一些类似的 SO问题没有像我期待的那么详细: 混淆,散列和encryption有什么区别? encryption和散列之间的区别

是否有可能解密MD5哈希?

有人告诉我,他已经看到了软件系统可以接受MD5encryption密码(通过与其他系统的各种集成),解密它们,并使用自己的algorithm将它们存储在系统自己的数据库中。 那可能吗? 我认为解密MD5哈希是不可能的(可行)。 我知道有MD5字典,但有一个实际的解密algorithm?

Java 256位AES基于密码的encryption

我需要实现256位AESencryption,但是我在网上find的所有例子都使用“KeyGenerator”生成一个256位的密钥,但是我想用我自己的密码。 我如何创build自己的密钥? 我已经尝试填充到256位,但后来我得到一个错误说,关键是太长了。 我有无限的pipe辖区的补丁安装,所以这不是问题:) IE浏览器。 KeyGenerator看起来像这样… // Get the KeyGenerator KeyGenerator kgen = KeyGenerator.getInstance("AES"); kgen.init(128); // 192 and 256 bits may not be available // Generate the secret key specs. SecretKey skey = kgen.generateKey(); byte[] raw = skey.getEncoded(); 代码取自这里 编辑 我实际上是把密码填充到256字节,而不是比特,这太长了。 以下是我现在使用的一些代码,我有更多的经验。 byte[] key = null; // TODO byte[] input = null; // TODO byte[] […]

使用PHP最简单的双向加密

在普通PHP安装中进行双向加密的最简单方法是什么? 我需要能够使用字符串密钥加密数据,并使用相同的密钥解密另一端。 安全性不像代码的可移植性那么重要,所以我希望能够尽可能地简化事情。 目前,我正在使用RC4实现,但是如果我能够找到本机支持的东西,我想我可以节省大量不必要的代码。