标签: cryptographic-hash-function

如何在Java中使用sha256散列一些字符串?

如何在Java中使用sha256散列一些字符串?有人知道这个免费图书馆吗?

java cryptography sha256 cryptographic-hash-function

187
推荐指数
11
解决办法
30万
查看次数

如何在Java中散列密码?

我需要哈希密码以存储在数据库中.我怎么能用Java做到这一点?

我希望获取纯文本密码,添加随机盐,然后将salt和散列密码存储在数据库中.

然后,当用户想要登录时,我可以获取他们提交的密码,从他们的帐户信息中添加随机盐,哈希并查看它是否等于存储的哈希密码及其帐户信息.

java passwords cryptographic-hash-function

170
推荐指数
10
解决办法
14万
查看次数

我应该选择哪种加密哈希函数?

.NET框架附带了6种不同的散列算法:

  • MD5:16字节(哈希时间500MB:1462毫秒)
  • SHA-1:20个字节(1644毫秒)
  • SHA256:32字节(5618毫秒)
  • SHA3​​84:48字节(3839毫秒)
  • SHA512:64字节(3820毫秒)
  • RIPEMD:20个字节(7066毫秒)

每个功能都有不同的表现; MD5是最快的,RIPEMD是最慢的.

MD5的优势在于它适用于内置的Guid类型; 它是3型UUID的基础.SHA-1哈希是类型5 UUID的基础.这使得它们非常易于识别.

然而,MD5易受碰撞攻击,SHA-1也容易受到攻击,但程度较轻.

在什么条件下我应该使用哪种散列算法?

我真的很想回答的具体问题是:

  • MD5不值得信任吗?在正常情况下,当您使用没有恶意意图的MD5算法且没有任何第三方有任何恶意意图时,您会期望任何冲突(意味着两个任意byte []产生相同的哈希)

  • RIPEMD比SHA1好多少?(如果它更好)它的计算速度要慢5倍,但散列大小与SHA1相同.

  • 散列文件名(或其他短字符串)时获得非恶意冲突的几率是多少?(例如,2个具有相同MD5哈希值的随机文件名)(使用MD5/SHA1/SHA2xx)一般来说,非恶意冲突的几率是多少?

这是我使用的基准:

    static void TimeAction(string description, int iterations, Action func) {
        var watch = new Stopwatch();
        watch.Start();
        for (int i = 0; i < iterations; i++) {
            func();
        }
        watch.Stop();
        Console.Write(description);
        Console.WriteLine(" Time Elapsed {0} ms", watch.ElapsedMilliseconds);
    }

    static byte[] GetRandomBytes(int count) {
        var bytes = new byte[count];
        (new Random()).NextBytes(bytes);
        return bytes;
    }


    static void …
Run Code Online (Sandbox Code Playgroud)

.net c# hash cryptography cryptographic-hash-function

135
推荐指数
3
解决办法
7万
查看次数

133
推荐指数
3
解决办法
6万
查看次数

为什么MD5哈希值不可逆?

我一直想知道的一个概念是使用加密哈希函数和值.我知道这些函数可以生成一个唯一且几乎不可能反转的哈希值,但这是我一直想知道的:

如果在我的服务器上,在PHP中我生成:

md5("stackoverflow.com") = "d0cc85b26f2ceb8714b978e07def4f6e"
Run Code Online (Sandbox Code Playgroud)

通过MD5函数运行相同的字符串时,您在PHP安装上获得相同的结果.正在使用一个过程从一些起始值产生一些值.

这是不是意味着有一些方法来解构正在发生的事情并扭转哈希值?

这些函数是什么使得结果字符串无法回溯?

hash md5 cryptography cryptographic-hash-function

88
推荐指数
6
解决办法
3万
查看次数

MD5是128位,但为什么是32个字符?

我读了一些关于md5的文档,它说它的128位,但为什么它是32个字符?我无法计算角色.

  • 1个字节是8位
  • 如果1个字符是1个字节
  • 然后128位是128/8 = 16字节对吗?

编辑:

SHA-1产生160位,那么有多少个字符?

hash md5 cryptography cryptographic-hash-function

77
推荐指数
6
解决办法
10万
查看次数

将md5散列字节数组转换为字符串

如何将散列结果(字节数组)转换为字符串?

byte[] bytePassword = Encoding.UTF8.GetBytes(password);

using (MD5 md5 = MD5.Create())
{
    byte[] byteHashedPassword = md5.ComputeHash(bytePassword);
} 
Run Code Online (Sandbox Code Playgroud)

我需要转换byteHashedPassword为字符串.

c# hash md5 cryptography cryptographic-hash-function

72
推荐指数
6
解决办法
7万
查看次数

C#SHA-1与PHP SHA-1 ...不同的结果?

我试图从一个字符串计算一个SHA-1哈希,但是当我使用php的sha1函数计算字符串时,我得到的东西比我在C#中尝试时有所不同.我需要C#来计算与PHP相同的字符串(因为php中的字符串是由我无法修改的第三方计算的).如何让C#生成与PHP相同的哈希?谢谢!!!

String = s934kladfklada@a.com

C#代码(生成d32954053ee93985f5c3ca2583145668bb7ade86)

        string encode = secretkey + email;
        UnicodeEncoding UE = new UnicodeEncoding();
        byte[] HashValue, MessageBytes = UE.GetBytes(encode);
        SHA1Managed SHhash = new SHA1Managed();
        string strHex = "";

        HashValue = SHhash.ComputeHash(MessageBytes);
        foreach(byte b in HashValue) {
            strHex += String.Format("{0:x2}", b);
        }
Run Code Online (Sandbox Code Playgroud)

PHP代码(生成a9410edeaf75222d7b576c1b23ca0a9af0dffa98)

sha1();
Run Code Online (Sandbox Code Playgroud)

php c# cryptography sha1 cryptographic-hash-function

35
推荐指数
3
解决办法
2万
查看次数

单向散列函数如何工作?

我阅读了有关md5哈希的维基百科文章,但我仍然无法理解哈希如何不能"重构"回到原始文本.

有人可以向对密码学知之甚少的人解释这是如何工作的吗?该功能的哪一部分使其成为单向的?

md5 cryptography cryptographic-hash-function

33
推荐指数
6
解决办法
4万
查看次数

为什么不能反转加密哈希?

为什么你不能像你可以反转数学函数那样反转算法呢?如何制作一个不可逆的算法?

如果你使用彩虹桌,是什么让使用盐不可能破解它?如果你用蛮力制作彩虹表来生成它,那么它就会发明每个明文值(到一个长度),最终会包含每个可能密码的盐和每个可能的盐(盐和密码/文本会只是作为单个文本聚集在一起).

hash md5 cryptography reversing cryptographic-hash-function

21
推荐指数
2
解决办法
1万
查看次数