1

エンコードされた文字列がいくつかあり、それらをデコードする必要があります。おそらく、base40エンコードである可能性があります。私は本当にデコードする必要がありますが、エンコードもすべてC#で行うと便利です。ところで、base40のように見えるという結論に達する前に、すべての標準タイプのデコードを試しました。

base40のエンコード/デコードについては何も見つかりませんでした。base32やもちろんbase64のような類似したものに関するエンコード情報がたくさん見つかったので、base40を実行できるはずだと思います。

エンコードされた文字列と正しいデコードされた値の例を次に示します。必要に応じて、他のいくつかの例を提供できます。デコードしたいすべての文字列は、エンコードされたSHA1ハッシュです。

エンコード

/ KUGOuoESMWYuDb + BTMK1LaGe7k =

デコード

0xFCA5063AEA0448C598B836FE05330AD4B6867BB9

更新: SHA1文字列のバイナリバージョンがbase64にエンコードされていることが判明したため、デコードに問題がありました。Ignacio Vazquez-Abramsは、base64を示す出力を表示しましたが、回答を説明せず、要求に応じてC#の例を提供しなかったため、クレジットを与えることができます。そこで私は、彼のコードがどの言語で何をしているかについて深く掘り下げ、C#の例でそれを行う方法を投稿した答えを思いつきました。

4

3 に答える 3

3

あなたが持っているのは、Base40ではなく、ありふれたBase64です。

>>> '/KUGOuoESMWYuDb+BTMK1LaGe7k='.decode('base64')
'\xfc\xa5\x06:\xea\x04H\xc5\x98\xb86\xfe\x053\n\xd4\xb6\x86{\xb9'
于 2010-06-26T19:45:27.750 に答える
3

イグナシオは正しいです。それはbase-64です:

byte[] raw = Convert.FromBase64String("/KUGOuoESMWYuDb+BTMK1LaGe7k=");
foreach(byte b in raw) Console.Write(b.ToString("x2"));

与える:

fca5063aea0448c598b836fe05330ad4b6867bb9
于 2010-06-26T20:07:38.017 に答える
1

さて、Base64ですが、それが小さい理由は、sha1のバイナリバージョンであるためです。提供された唯一の答えは、実際にそれを行う方法を提供していませんでした。C#コードを要求したので、ここに1つの方法があります。 C#でそれを行う:

string encoded = "/KUGOuoESMWYuDb+BTMK1LaGe7k=";
StringBuilder builder = new StringBuilder();
foreach (var b in Convert.FromBase64String(encoded))
    builder.Append(string.Format("{0:X}", b));
Console.Out.WriteLine(builder.ToString());
于 2010-06-26T20:05:55.710 に答える