2013-11-27 44 views

回答

2

Base32是一種用於編碼任意字節數據的符號。 Base32編碼數據的最大長度沒有限制 - 「32個字符」是指用於以Base32表示法編寫任意字節數據的字符集。結果字符串將只包含該集合中的字符。唯一的限制是Base32編碼的字符串的長度必須是40位的倍數。

I2P中的Base32地址是I2P目標的SHA256散列的Base32編碼。

這裏是一個Python腳本Base64編碼I2P目的地轉換成I2P B32地址(從i2p.scripts分支在I2P單調庫):

#!/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