Questions tagged «cryptography»

密码学必须进行编程。密码学尤其涵盖加密,散列和数字签名。与crypto.stackexchange.com更好地询问与软件开发不直接相关的密码学问题。

10
如何使用bcrypt在PHP中对密码进行哈希处理?
我时不时听到“使用bcrypt在PHP中使用密码,bcrypt规则存储密码”的建议。 但是什么bcrypt呢?PHP不提供任何此类功能,维基百科对文件加密实用程序不屑一顾,而Web搜索仅显示了几种以不同语言实现的Blowfish实现。现在Blowfish也可以通过PHP在PHP中使用mcrypt,但这对存储密码有何帮助?河豚是一种通用密码,它有两种工作方式。如果可以加密,则可以解密。密码需要单向散列功能。 有什么解释?


12
散列和加密算法之间的根本区别
我看到散列和加密算法之间有很多混淆,我想听听一些有关以下方面的专家建议: 何时使用散列与加密 是什么使哈希算法或加密算法与理论/数学水平不同(即,使哈希值不可逆(无需借助彩虹树)) 这里有一些类似的 SO问题,没有像我想要的那样详细: 混淆,哈希和加密之间有什么区别? 加密和哈希之间的区别

9
基于Java 256位AES密码的加密
我需要实现256位AES加密,但是我在网上找到的所有示例都使用“ KeyGenerator”来生成256位密钥,但是我想使用自己的密码。如何创建自己的密钥?我尝试将其填充到256位,但是随后出现错误消息,提示密钥太长。我确实安装了无限管辖权补丁,所以那不是问题:) 就是 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; // …

10
如何生成软件许可证密钥?
许可证密钥是事实上的标准,可作为反盗版措施。坦白地说,这让我感到“ 通过隐秘获得安全性”,尽管我真的不知道如何生成许可证密钥。许可证密钥生成的一个好(安全)示例是什么?他们使用什么加密原语(如果有)?它是消息摘要吗?如果是这样,它们将对哪些数据进行哈希处理?开发人员采用什么方法使破解者难以构建自己的密钥生成器?密钥生成器是如何制成的?

16
“双哈希”密码是否比仅哈希一次密码安全性低?
与仅对一次哈希进行哈希处理相比,对密码进行两次哈希存储之前或多或少的安全性高吗? 我在说的是这样做: $hashed_password = hash(hash($plaintext_password)); 不仅仅是这样: $hashed_password = hash($plaintext_password); 如果它的安全性较差,您能提供一个很好的解释(或一个链接)吗? 另外,使用的哈希函数是否有所不同?如果混合使用md5和sha1(例如)而不是重复相同的哈希函数,会有什么区别吗? 注意1:当我说“双重哈希”时,我说的是两次对密码进行哈希处理,以使密码更加模糊。我不是在谈论解决冲突的技术。 注意2:我知道我需要添加随机盐以确保其安全。问题是,使用相同算法进行两次哈希处理是否有助于或损害哈希。


24
是否可以解密MD5哈希?
有人告诉我,他看到过以下软件系统: 从其他系统检索MD5加密的密码; 解密加密的密码并 使用系统自己的算法将密码存储在系统的数据库中。 那可能吗?我认为解密MD5散列是不可能/不可行的。 我知道有MD5词典,但是有实际的解密算法吗?

23
无法使用PIP和setup.py安装Python密码术软件包
当我尝试通过安装Python 加密程序包pip install cryptography或通过从其站点下载该程序包并运行时python setup.py,出现以下错误: D:\Anaconda\Scripts\pip-script.py run on 02/27/14 16:13:17 Downloading/unpacking cryptography Getting page https://pypi.python.org/simple/cryptography/ URLs to search for versions for cryptography: * https://pypi.python.org/simple/cryptography/ Analyzing links from page https://pypi.python.org/simple/cryptography/ Skipping https://pypi.python.org/packages/cp26/c/cryptography/cryptography-0.2-cp26-none-win32.whl#md5=13e5c4b19520e7dc6f07c6502b3f74e2 (from https://pypi.python.org/simple/cryptography/) because it is not compatible with this Python Skipping https://pypi.python.org/packages/cp26/c/cryptography/cryptography-0.2.1-cp26-none-win32.whl#md5=00e733648ee5cdb9e58876238b1328f8 (from https://pypi.python.org/simple/cryptography/) because it is not compatible …
256 python  cryptography  pip 

5
您在哪里存放盐串?
在对数据库存储的密码进行哈希处理时,我一直使用正确的按条目输入的盐字符串。出于我的需要,将盐存储在数据库中散列密码旁边一直很好。 但是,有些人建议将盐与数据库分开存储。他们的论据是,如果数据库遭到破坏,攻击者仍然可以构建一个彩虹表,并考虑到特定的盐字符串,以便一次破解一个帐户。如果该帐户具有管理员权限,那么他甚至不需要破解任何其他帐户。 从安全角度来看,将盐存储在其他位置是否值得?考虑在同一台计算机上具有服务器代码和数据库的Web应用程序。如果将盐类存储在该计算机上的平面文件中,则很有可能如果数据库遭到破坏,则盐类文件也会被破坏。 有什么建议的解决方案吗?

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

9
您如何加密和解密PHP字符串?
我的意思是: Original String + Salt or Key --> Encrypted String Encrypted String + Salt or Key --> Decrypted (Original String) 也许像这样: "hello world!" + "ABCD1234" --> Encrypt --> "2a2ffa8f13220befbe30819047e23b2c" (may be, for e.g) "2a2ffa8f13220befbe30819047e23b2c" --> Decrypt with "ABCD1234" --> "hello world!" 在PHP中,您该怎么做? 尝试使用Crypt_Blowfish,但对我不起作用。

10
密码盐如何帮助抵抗彩虹表攻击?
我在理解对密码加盐的目的时遇到了一些麻烦。据我了解,主要用途是阻止彩虹表攻击。但是,我见过的实现此问题的方法似乎并没有真正使问题变得更难。 我看过许多教程建议将盐用于以下用途: $hash = md5($salt.$password) 原因是哈希现在不映射到原始密码,而是密码和盐的组合。但是说$salt=foo和$password=bar和$hash=3858f62230ac3c915f300c664312c63f。现在,拥有彩虹表的人可以反转哈希并提出输入“ foobar”。然后,他们可以尝试所有密码组合(f,fo,foo,... oobar,obar,bar,ar,ar)。可能需要花费几毫秒的时间才能获取密码,但除此之外没有多少其他信息。 我见过的另一种用法是在我的linux系统上。在/ etc / shadow中,哈希密码实际上与 salt 存储在一起。例如,盐“ foo”和密码“ bar”将散列为此:$1$foo$te5SBM.7C25fFDu6bIRbX1。如果黑客以某种方式能够获得此文件,那么我就看不到salt的用途是什么,因为te5SBM.7C25fFDu6bIRbX已知的反向哈希包含“ foo”。 感谢您提供的任何信息。 编辑:感谢您的帮助。总而言之,盐使散列密码变得更加复杂,因此使其不太可能存在于预先计算的彩虹表中。我之前误解的是我以为所有哈希都存在一个彩虹表。


7
java.util.Random和java.security.SecureRandom之间的区别
我的团队收到了一些生成随机令牌的服务器端代码(Java),我对此有一个疑问- 这些令牌的用途非常敏感-用于会话ID,密码重置链接等。因此,它们确实需要进行密码随机处理,以避免有人猜测或对它们进行暴力破解。令牌是“长”的,因此它是64位长。 该代码当前使用java.util.Random该类来生成这些令牌。该文档的java.util.Random明确规定如下: java.util.Random的实例不是加密安全的。可以考虑使用SecureRandom获得加密安全的伪随机数生成器,以供对安全敏感的应用程序使用。 但是,代码当前使用的方式java.util.Random是-实例化java.security.SecureRandom该类,然后使用该SecureRandom.nextLong()方法获取用于实例化java.util.Random该类的种子。然后使用java.util.Random.nextLong()方法生成令牌。 所以,我现在的问题是-仍然java.util.Random使用种子进行播种还是不安全的java.security.SecureRandom?我是否需要修改代码,使其java.security.SecureRandom专门用于生成令牌? 目前,代码种子是Random启动时的一次

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.