Вычисление хешей из строк в файле
Привет всем! У меня есть два файлика csv, в первом одна строка:
aaaaa;bbbbbbbb
Во втором просто:
bbbbbbbb
Мне надо посчитать хеши для этих значений и я набросал что-то подобное:
val parser = CSVParser.parse(new FileReader(input), CSVFormat.EXCEL.withDelimiter(delimiter))
val line = parser.getRecords.asScala.map(record => {
record.iterator().asScala.filter(_.trim.nonEmpty).map(value => {
Base64.encode(Blake2b512.hash(value.trim))
}).toList
})
println(line.foldLeft(List.empty[String])((acc, t) => acc ++ t))
Здесь delimiter - это `;`, input - путь до файла. Результат выполнения:
List(J26qA0M6CELrh5wNkMS8Jh5peJoMJa/j1UtUE+9ABwAKz5YcXx473prQylmlXt0gxdUGhX3TGY3cKpg9tZfVng==)
List(aTbBrHUvRSn7eO9F/FgZ5KhPY0shvUWssNuENtpnF66Xr4Cy+Wve1W4olK3RGIu8DLc5mr7cpSu5wSU562R/Lw==,
FNcps5PCPsNNef/2uKREMMf4q+IE1jd/tNtumFgngf5QtovNgqk3st6efuCazW99+S8Q9t4VekNFZl/ekdKNUA==)
И у меня возник вопрос, почему для одной и той же строки(`bbbbbbbb`) посчитался разный хеш? При том, что если поменять местами `bbbbbbbb` и `aaaaa`, то хеш одинаковый будет в обоих случаях для `bbbbbbbb`.
Почему порядок расположения строк влияет на расчет хеша?
Мне казалось, что если строки равные, то и хеши посчитаются одинаково.
Я тестировал это на библиотеке scrypto(но также пробовал и Guava и commons-codec).
Спасибо за ваши ответы!