使用sha256managed解密哈希

-1 c# encryption hash

好吧,一周前我开始使用c#,我有点困惑.

我从加密开始,基本上是哈希和盐.

我的老师给了我们这个周末做的"功课",我和我的所有伙伴都非常困惑.

我有这个简单的代码:

练习包括"解密"散列密码(使用SHA256managed进行哈希处理),我们知道它是一个4个字符的数字.

我尝试使用循环并逐个解密所有字符,但我卡住了,我不知道如何继续.

如果你能帮助我,我真的很感激.

谢谢!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Security.Cryptography;
using System.IO;

namespace Examen
{
    class Program
    {
        static void Main(string[] args)
        {

            string hashed_password = "YOSGtSkJ41KX7K80FEmg+vme4ioLsp3qr28XU8nDQ9c=";



            Console.ReadLine();
        }


    }
}
Run Code Online (Sandbox Code Playgroud)

Jim*_*ood 6

哈希是一种单向函数.给定密码'1805',您将获得'2DOrd5wHHjYbtrSvQ + SyTH6HUDID5z + XV/cV8aYOSzs ='的哈希值.

你不能倒退:给定'2DOrd5wHHjYbtrSvQ + SyTH6HUDID5z + XV/cV8aYOSzs ='的哈希值,你无法计算'1805'的密码.

但是,您可以尝试每个可能的密码,并查看每个密码的哈希值.然后,您有一个所有可能的哈希列表,所有可能的密码从'0000'到'9999'.在这种情况下,哈希列表中的某个位置是您感兴趣的:'YOSGtSkJ41KX7K80FEmg + vme4ioLsp3qr28XU8nDQ9c ='.

它应该花费你的程序不到一秒钟来发现密码.

请注意,您的程序必须使用与密码相同的格式对数据进行哈希处理,密码是8字节的数据,采用UTF-16LE编码.确保您使用与密码一样的哈希相同的数据格式进行哈希处理,否则您将永远找不到匹配项.