我正在尝试配置和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的工具?
最佳答案
base32是一种编码任意字节数据的符号。对BASE32编码数据的最大长度没有限制——“32个字符”指的是用于在Base32符号中写入任意字节数据的字符集。结果字符串将只包含该集中的字符。唯一的限制是base32编码字符串的长度必须是40位的倍数。
i2p中的base32地址是i2p目标sha256散列的base32编码。
下面是一个python脚本,用于将base64编码的i2p目的地转换为i2p b32地址(来自i2p单调存储库中的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