1

以前の回答の組み合わせに基づいて、ハッシュに適切な文字を出力する際の問題を解決することができました。私が取得しているハッシュは、私がフォローしているドキュメントから予想されるものよりもはるかに長いため、私はまだ長さの問題を抱えています。APIドキュメントには、SHA512を使用するように記載されており、パラメーターの例として「FA35A0194E3BE7024CEFB1839CBFC922」がありますが、「test」などの単純なパスワードを使用してハッシュテスターを実行し、値を渡すと、「EE26B0DD4AF7E749AA1A8F3C10AE9923F618980772E473F8819A5D4必要な長さよりも長くなります。

参考までに、これを行うために使用しているものは次のとおりです。

byte[] hashedPassword = HashAlgorithm.Create("SHA512").ComputeHash(new UTF8Encoding(false).GetBytes("test"));
Console.WriteLine(BitConverter.ToString(hashedPassword).Replace("-", ""));

うまくいけば、そこにいる誰かがこのハッシュのもので私よりも多くの経験を持っている(誰もいない)。どういうわけかこのような値を縮小するのは正常ですか、それともその一部を取りますか?ここからどうしたらいいのかよくわかりません。

4

3 に答える 3

24

512 ビットのハッシュを要求しました。512 ビットは 64 バイトです。16 進数で記述した 64 バイトは 128 文字です。したがって、ここで何かがおかしいと思う理由がわかりません。

これは明らかに私が必要とするものよりもはるかに長いです。

なぜそれが明らかなのですか?

必要なものよりもはるかに長い場合、なぜ最初に 512 ビットのハッシュを要求したのですか?

このような値を何らかの形で縮小したり、特定の部分を取得したりするのは正常ですか?

絶対にありません

ここからどうすればいいのかよくわかりません。

セキュリティ ソフトウェアの作成を専門とする専門家を雇ってください。この専門家は、ソフトウェアを作成し、適切なメンテナンスのトレーニングを行うことができます。安全なソフトウェアを作成して成功させるには、十分な知識がありません。セキュリティ システムを記述することは、どの言語でもできる最も難しいことの 1 つです。攻撃に対して実際に安全なシステムを作成するには、何年ものトレーニングと経験が必要です。

于 2012-04-26T15:38:13.533 に答える
6

FIPS PUB 180-4では、切り捨てられたハッシュを使用できます。切り捨てられたバージョンを追加する主な理由は、一部のCPUではSH512がSHA256よりも高速であるため、SHA512を切り捨てることが興味深いオプションになる可能性があるためです。ただし、標準では、切り捨てられたハッシュに対して異なる初期値が使用されます。これは、既成のSHA512実装をそのままにして、結果を切り捨てることができないことを意味します。

于 2012-04-26T19:59:35.077 に答える
0

これを理解したかどうかはわかりませんが、2 バイトの 16 進文字をそれぞれ 1 バイトに変換できます。標準のハッシュのようには見えませんが、期待どおりのサイズになります。

于 2013-10-30T19:15:48.797 に答える