Java でハッシュ アルゴリズムをクラックしようとしています。
public static int encode(String file) {
int hash = 0;
file = file.toUpperCase();
for(int i = 0; i < file.length(); i++) {
hash = (hash * 61 + file.charAt(i)) - 32;
}
return hash;
}
これは私の試みです:
public static String decode(int hash) {
long realHash = (hash < 0 ? Integer.MAX_VALUE + Math.abs(hash) : hash);
ByteBuffer buffer = ByteBuffer.allocate(50);
while (realHash > 0) {
buffer.put((byte) ((realHash % 61) + 32));
realHash = (realHash - 32) / 61;
}
buffer.flip();
return new String(buffer.array()).trim();
}
私のソリューションでは深刻なデータ損失が発生しているようです。整数のオーバーフローにより、長いテキスト データを完全にハッシュ解除できるとは思いません。助言がありますか?