【发布时间】:2014-07-21 13:18:14
【问题描述】:
我正在使用下面的方法来编码给定的文本。
static long encodeText(String text) {
long l = 31;
for (int i = 0; i < text.length(); i++) {
l = l * 47 + text.getBytes()[i] % 97;
}
return l;
}
当我以encodeText("stackoverflow") 调用上述方法时,返回编码文本3818417496786881978。
现在我想提供编码文本并获取字符串值。例如,如果我将3818417496786881978 分配给decodeText(long encoded),我需要得到stackoverflow 的输出。
static String decodeText(long encoded) {
String str = null;
// decode steps here
return str;
}
我该怎么做?
【问题讨论】:
-
鉴于您当前的“编码”方案,这根本行不通。如果您想真正加密某些东西,请使用真正的加密 API。 (在不指定编码的情况下调用
text.getBytes()等还有其他问题......) -
编码的目的是什么?是加密吗?如果是,为什么不使用java支持的标准加密机制?
-
问题是不能正确指定数字中的分隔符。如果所有文本都变成 2 位数字,那么它是可能的。如果它是可变长度的,那么它很有可能无法解码。
-
@JonSkeet 谢谢。那么无论如何我目前的编码方案都没有这样做吗?如果我打电话给
text.getBytes("UTF-8")? -
不-您的编码方法基本上太有损了。这是一种用于散列而不是加密的代码。
标签: java encoding ascii decode