我正在阅读一些关于盐和密码哈希的文章,还有一些人提到彩虹攻击.什么是彩虹攻击以及防止它的最佳方法是什么?
可能重复:
MD5哈希值怎么不可逆?
我正在读一个关于MD5的问题,它让我记住了令我难以置信的事情.非常简单的问题,如果它不是一个好的我很抱歉.我只是无法理解你是如何使用某种算法将某些东西转换为一种东西的,并且无法使用该算法反向转换回来.
那怎么可能呢?
此外,由于多个字符串可以创建相同的MD5哈希值,因为它的数据少于输入字符串,所以其他任何哈希系统如何更好?
是否有可能扭转sha1?
我正在考虑使用sha1创建一个简单的轻量级系统来验证通过未加密连接进行通信的小型嵌入式系统.
假设我使用"密钥"输入创建一个这样的sha1,并用时间戳调整它,以便sha一直在变化.
sha1("My Secret Key"+"a timestamp")
Run Code Online (Sandbox Code Playgroud)
然后我将这个sha1包含在通信和服务器中,可以进行相同的计算.希望没有人能够找出"秘密密钥".
但这是真的吗?
如果你知道我是这样做的,你会知道我确实在那里放了一个时间戳,你会看到sha1.那么你可以使用这两个并找出"秘密密钥"吗?
secret_key = bruteforce_sha1(sha1, timestamp)
Run Code Online (Sandbox Code Playgroud)
谢谢约翰
注1:我猜你可能会以某种方式暴力,但实际上会有多少工作?
注2:我不打算加密任何数据,我只想知道是谁发送的.
可能重复:
是否可以解密md5哈希?
我使用密码存储在数据库中md5,并且想知道是否有办法扭转哈希,以便在忘记密码时将用户的密码通过电子邮件发送给他.
如果这不是最合适的方法,处理丢失密码的适当方法是什么?
当我们说字典攻击时,我们并不是真正的字典,是吗?我猜我们是指一个黑客的字典,即彩虹表,对吗?
我的观点是,我们不是在谈论别人的密钥不同的密码进入登录框,我们在谈论谁的人有完全访问你的数据库(已哈希密码,而不是普通的密码)和这个人扭转哈希,右?
实际上我想从加密密码中取回密码.
密码加密如下:
MessageDigest md = MessageDigest.getInstance("SHA");
md.reset();
byte[] encryptedBinarySource = md.digest(source.getBytes("UTF-8"));
Run Code Online (Sandbox Code Playgroud)
如何解密价值encryptedBinarySource?
java encryption digest-authentication cryptographic-hash-function
我使用以下代码将字符串转换为sha1字符串,但我无法找到任何反向的解决方案,即sha1字符串的正常字符串.
+(NSString *)stringToSha1:(NSString *)str{
const char *s = [str cStringUsingEncoding:NSASCIIStringEncoding];
NSData *keyData = [NSData dataWithBytes:s length:strlen(s)];
// This is the destination
uint8_t digest[CC_SHA1_DIGEST_LENGTH] = {0};
// This one function does an unkeyed SHA1 hash of your hash data
CC_SHA1(keyData.bytes, keyData.length, digest);
// Now convert to NSData structure to make it usable again
NSData *out = [NSData dataWithBytes:digest length:CC_SHA1_DIGEST_LENGTH];
// description converts to hex but puts <> around it and spaces every 4 bytes
NSString *hash = [out description];
hash = …Run Code Online (Sandbox Code Playgroud) security ×3
encryption ×2
md5 ×2
cryptographic-hash-function ×1
cryptography ×1
hash ×1
iphone ×1
java ×1
rainbowtable ×1
saltedhash ×1
sha1 ×1