我正在研究一个实现,我应该将长哈希转换为来回(函数应该是可逆的),但我没有弄清楚如何让它在Java中与这些类一起工作。StringBigInteger
我的第一个想法是做如下事情:
given s:String
for every character in the input string:
convert char to decimal ASCII representation (i.e. 'a' -> '97')
append result to s
build a BigDecimal with the resulting s
但问题是(正如许多用户所评论的那样)转换的长度,因为ASCII字符从0到255。它可以从 更改为 ,但是在解码中再次存在问题,删除每个字符的标题零(顺便说一句,算法效率较低)'a' -> '97''a' -> '097'
因此,总而言之,这里提出的算法不是最好的主意,所以我对其他一些解决方案持开放态度。此外,如果 和/或 中有任何库或内置方法,它也很有帮助。签名是StringBigInteger
public class EncodeUtil {
public BigInteger encode(String s) {...}
public String decode(BigInteger bi) {...}
}
条件是输出decode(encode("som3_We1rd/5+ring"))"som3_We1rd/5+ring"
我认为值得一提的是,用于解码的接收字符串是哈希值,例如lQ5jkXWRkrbPlPlsRDUPcY6bwOD8Sm/tvJAVhYlLS3WwE5rGXv/rFRzyhn4XpUovwkLj2C3zS1JPTQ1FLPtxNXc2QLxfRcH1ZRi0RKJu1lK8TUCb6wm3cDw3VRXd21WRsnYKg6q9ytR+iFQykz6MWVs5UGM5NPsCw5KUBq/g3Bg=
欢迎任何想法/建议。提前感谢您抽出宝贵时间接受采访。
呼唤远方
相关分类