混乱设置i2p base32有52个字符

时间:2013-11-27 08:57:21

标签: linux encryption sha256 tunnel base32

我正在尝试配置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 个答案:

答案 0 :(得分:2)

Base32是用于编码任意字节数据的符号。 Base32编码数据的最大长度没有限制 - “32个字符”是指用于以Base32表示法写入任意字节数据的字符集。结果字符串仅包含该集合中的字符。唯一的限制是Base32编码的字符串的长度必须是40位的倍数。

I2P中的Base32地址是I2P目标的SHA256哈希的Base32编码。

这是一个Python脚本,用于将Base64编码的I2P目标转换为I2P B32地址(来自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