Мне нужна функция, которая, учитывая целое число соли и целое значение, будет возвращать небольшую строку хеша.Вызов функции с 1 и 56 может вернуть «1AF3».Вызов с 2 и 56 может вернуть «C2FA».
Справочная информация: у меня есть веб-приложение (написанное на C #, если это имеет значение), в котором значения Id сотрудников хранятся в виде целых чисел.Пользователи должны иметь возможность видеть непротиворечивое представление этого идентификатора, но ни один пользователь не должен видеть фактический идентификатор или такое же представление этого идентификатора, которое видит другой пользователь.
Например, предположим, что есть сотрудникс идентификатором 56.
Когда пользователь 1 входит в систему, где бы он ни увидел этого сотрудника, он видит «1AF3» или что-то в этом роде.Он может видеть этого сотрудника на разных страницах приложения, и его идентификатор всегда должен быть 1AF3, поэтому он знает, что это один и тот же парень.
Когда пользователь 2 входит в систему, если он встретит того же сотрудника, он всегда будет видеть"C2FA" или что-то в этом роде.То же самое касается пользователя 2: где бы он ни находился в системе, он увидел бы, что один сотрудник представлен этой же строкой.
Если пользователь 2 заглянет через плечо пользователя 1, а пользователь 1 вошел в систему, пользователь 2не должен быть в состоянии распознать кого-либо из своих сотрудников на экране пользователя 1. Это хэш должен быть необратимым.
Имеет ли это смысл?
Еще одно дополнительное требование заключается в том, что пользователи будут обсуждатьЭти сотрудники в электронной почте, на телефоне и в факсе должны иметь минимальный размер хеша и не содержать буквенно-цифровых символов.Идеальным было бы 10 символов или меньше.
Может быть, есть способ «свернуть» результат SHA-256 в меньшее количество символов, поскольку можно использовать весь алфавит?Понятия не имею.
Обновление: еще один обзор Спасибо всем за то, что дали этот шанс, но похоже, что я плохо объясняю это или что-то в этом роде.
Давайте представим, что вы и я оба пользователи этой системы.Ты Фред, а я Крис.Ваш UserId равен 2, а мой UserId равен 1. Давайте также предположим, что в системе 5 сотрудников.Сотрудники не являются пользователями.Вы можете думать о них как о продуктах или о чем угодно.Я просто говорю о 5 общих сущностях, с которыми вы, Фред и я, Крис, имеете дело с каждым.
Фред, каждый раз, когда вы входите в систему, вы должны иметь возможность однозначно идентифицировать каждого сотрудника.Каждый раз, когда я, Крис, захожу в систему, мне также нужно работать с сотрудниками, и мне тоже нужно будет идентифицировать их уникальным образом.Но если я когда-нибудь посмотрю через ваше плечо, пока вы управляете сотрудниками, я не смогу выяснить, какими из них вы управляете.
Итак, в то время как в базе данных идентификаторы сотрудников равны 1, 2, 3, 4 и 5. Вы и я не видим их в нашем интерфейсе.Я могу видеть A, B, C, D и E, а вы можете видеть F, G, H, I и J. Так что, хотя E и J представляют одного и того же сотрудника, я не могу смотреть на ваш экран, пока вывы работаете с вашим сотрудником "J" и знаете, что вы работаете с сотрудником 5, потому что для меня этот сотрудник называется сотрудником "E" для меня.
Итак, каждый Фред и Крис могут работать с одним и тем женабор сотрудников, но если бы они увидели работу друг друга или обсуждение в электронном письме, они не смогли бы узнать, о каких сотрудниках говорил другой парень.
Я думал, что смогу достичь этого "зависящий от пользователя идентификатор EmployeeID ", взяв реальный идентификатор сотрудника и хэшируя его, используя идентификатор пользователя в качестве соли.
Поскольку Фреду и Крису каждый из них должен обсудить сотрудников по электронной почте и телефону со своими клиентами и клиентамиЯ хотел бы, чтобы идентификаторы, которые они используют в этих обсуждениях, были настолько простыми, насколько мы можем их получить.