eepsite を構成しようとしていますが、base32 が長すぎます。i2p は b32 または sha256 を使用しますか? または b32 を 256 に変換して、eepsite の場合は? 与えられた例は 52 文字http://www.i2p2.de/naming.html#base32であり、base32 は 52 文字ではなく、32 文字http://online-calculators.appspot.com/base32/です。私は何が欠けていますか?i2p に特化したツールはありますか?
1 に答える
2
Base32 は、任意のバイト データをエンコードするための表記法です。Base32 でエンコードされたデータの最大長に制限はありません。「32 文字」とは、Base32 表記で任意のバイト データを書き込むために使用される文字のセットを指します。結果の文字列には、そのセットの文字のみが含まれます。唯一の制限は、Base32 でエンコードされた文字列の長さが 40 ビットの倍数でなければならないことです。
I2P の Base32 アドレスは、I2P 宛先の SHA256 ハッシュの Base32 エンコードです。
以下は、Base64 でエンコードされた I2P 宛先を I2P B32 アドレスに変換する Python スクリプトです (I2P Monotone リポジトリの i2p.scripts ブランチから)。
#!/usr/bin/env python
#
# Written by duck
# http://forum.i2p/viewtopic.php?t=4367
#
import base64, hashlib, sys
if len(sys.argv) != 2:
print 'Usage: 64to32.py <base64key>'
sys.exit(1)
key = sys.argv[1]
raw_key = base64.b64decode(key, '-~')
hash = hashlib.sha256(raw_key)
base32_hash = base64.b32encode(hash.digest())
print base32_hash.lower().replace('=', '')+'.b32.i2p
于 2014-02-17T00:45:18.650 に答える