使用sha256managed解密哈希

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用sha256managed解密哈希相关的知识,希望对你有一定的参考价值。

好吧,一周前我开始使用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();
        }


    }
}
答案

我的方法是做一个蛮力,因为你说你已经知道它是一个4位数字。

你可以这样做:

  static void Main(string[] args)
    {
        string hashed = "YOSGtSkJ41KX7K80FEmg+vme4ioLsp3qr28XU8nDQ9c=";

        for (int i = 1000; i <=9999; i++)
        {
            string digit = i.ToString().PadLeft(4, '0');
            string s = ComputeSHA256(digit);
            if (s == hashed)
            {
                Console.WriteLine(digit + "is my decrypted hash");
                break;
            }
        }
        Console.ReadKey();
    }

    static string ComputeSHA256(string plainText)
    {
         SHA256Managed sha256Managed = new SHA256Managed();
        Encoding u16LE = Encoding.Unicode;
        string hash = String.Empty;
        byte[] hashed = sha256Managed.ComputeHash(u16LE.GetBytes(plainText), 0, u16LE.GetByteCount(plainText));
        return Convert.ToBase64String(hashed);
    }

以上是关于使用sha256managed解密哈希的主要内容,如果未能解决你的问题,请参考以下文章

hmac sha256和sha256的区别

是否可以使用用户的视频卡在浏览器中计算sha256哈希值,例如。使用WebGL或Flash?

如何在Mason代码中创建字符串的SHA-256哈希?

使用OpenSSL计算并打印文件的SHA256哈希值

sha256双向加密吗

使用 Crypto++ 生成 SHA256 哈希,使用字符串作为输入和输出?