我在Amazon S3上有一个图像库.对于每个图像,我md5我的服务器上的源URL加上一个时间戳来获取唯一的文件名.由于S3不能有子目录,我需要将所有这些图像存储在一个平面文件夹中.
我是否需要担心产生的MD5哈希值中的冲突?
额外奖励:在我开始看到MD5产生的哈希值发生冲突之前,我可以拥有多少个文件?
md5散列的字符串的最大长度是多少?或者:如果它没有限制,如果是,那么md5输出值的最大长度是多少?
MD5散列文件仍然被认为是一个足够好的方法来唯一地识别它,因为MD5算法的所有破坏和安全问题等?安全性不是我的主要关注点,但唯一标识每个文件的是.
有什么想法吗?
我正在进行php登录,我正在尝试决定是否使用SHA1或Md5,或者我在另一篇stackoverflow文章中读到的SHA256.他们中的任何一个比其他人更安全吗?对于SHA1/256,我还使用盐吗?
另外,这是一种将密码存储为mysql中的哈希的安全方法吗?
function createSalt()
{
$string = md5(uniqid(rand(), true));
return substr($string, 0, 3);
}
$salt = createSalt();
$hash = sha1($salt . $hash);
Run Code Online (Sandbox Code Playgroud) 任何人都可以建议一个简单的(即数十行代码,而不是数百行)散列函数(与浏览器兼容)JavaScript?理想情况下,我想要一些东西,当传递一个字符串作为输入时,产生类似于32字符十六进制字符串的东西,它是MD5,SHA1等的典型输出.它不一定是加密安全的,只是合理地抵抗冲突.(我的初始用例是URL,但我可能希望将来在其他字符串上使用它.)
我使用以下C#代码从字符串计算MD5哈希.它运行良好,生成一个32个字符的十六进制字符串,如下所示:
900150983cd24fb0d6963f7d28e17f72
string sSourceData;
byte[] tmpSource;
byte[] tmpHash;
sSourceData = "MySourceData";
//Create a byte array from source data.
tmpSource = ASCIIEncoding.ASCII.GetBytes(sSourceData);
tmpHash = new MD5CryptoServiceProvider().ComputeHash(tmpSource);
// and then convert tmpHash to string...
Run Code Online (Sandbox Code Playgroud)
有没有办法使用这样的代码生成一个16个字符的十六进制字符串(或12个字符的字符串)?一个32个字符的十六进制字符串是好的,但我认为客户输入代码是无聊的!
生成多维数组的MD5(或任何其他哈希)的最佳方法是什么?
我可以轻松地编写一个循环,遍历数组的每个级别,将每个值连接成一个字符串,然后简单地在字符串上执行MD5.
然而,这看起来很麻烦,我想知道是否有一个时髦的函数,它将采用一个多维数组,并哈希它.
在"标准"笔记本电脑x86硬件上计算MD5散列的CPU密集程度是否比SHA-1或SHA-2少?我对一般信息感兴趣,不是特定于某个芯片.
更新: 在我的情况下,我有兴趣计算文件的哈希值.如果文件大小很重要,我们假设它是300K.
md5 ×10
hash ×6
sha1 ×3
cryptography ×2
php ×2
arrays ×1
c# ×1
cryptographic-hash-function ×1
iphone ×1
javascript ×1
login ×1
objective-c ×1
random ×1
sha2 ×1
sha256 ×1