Как создать уникальный код на основе содержимого? - PullRequest
0 голосов
/ 23 января 2019

Изображение, которое вы вводите во вход.Для каждого добавляемого вами символа (включая специальные символы, такие как @ . # ¤ % & ~ и т. Д.) Будет создан уникальный код на основе содержимого.Не хэш!Этот уникальный код будет содержать всего 20 символов.

Пример

  • This is just an example становится H59S7Y54CI6M7S2XX8A9
  • This is another example становится C77KE95HIAJ7VN582758
  • Hello! I am a example string! становится Y8BV572SF8U76RXVB944
  • This is just an example становится H59S7Y54CI6M7S2XX8A9

Почему я хочу это

Я работаю над проектом, где посетителиможете войти в свои аккаунты (если они есть).Как только они введут свой адрес электронной почты и пароль, уникальный код будет сгенерирован на основе строки (в скрытом вводе), чтобы веб-сайт мог идентифицировать пользователя и получить правильные данные из базы данных.

Зачем мне это нужно?

Я шифрую все в базе данных 256-битным AES, и у каждого пользователя есть свой собственный ключ шифрования.Чтобы идентифицировать введенный адрес электронной почты и пароль (который шифруется с помощью ключа шифрования веб-сайтов до тех пор, пока они не войдут в первый раз), этот уникальный код (на основе строки) будет идентифицировать логин.Поэтому сделать идентификацию логина с ключами шифрования сайтов невозможно.Отсюда и мой вопрос.

Это может быть угроза безопасности, поскольку уникальный код будет храниться в хеше базы данных в MD5 или Whirlpool, но я понятия не имею, как я могу идентифицировать логин другим способом.Если вы знаете лучший способ, скажите, пожалуйста.

Итак, как мне это сделать?Это вообще возможно сделать?

Я знаю, как генерировать уникальный код, который не основан на контенте (например, генерировать пароли), но я не знаю, как сгенерироватькод, уникальный по содержанию.

1 Ответ

0 голосов
/ 23 января 2019

Я не знаю цели, но отвечая прямо на ваш вопрос о том, как сгенерировать уникальный код, основанный на контенте, вы можете получить что-то вроде этого

function symmetricEncode(content){
  var output = [];
  for (var i=0; i<content.length; i++){    
    output.push(String.fromCharCode(~ content[i].charCodeAt()));
  }
  return output.join("");
}

var string = "Hey you there";
var code = symmetricEncode(string);

console.log("string to code: ", string);
console.log("code: ", code);
console.log(typeof code);
console.log("decoded code: ", symmetricEncode(code));

Этот код не просто хэш, потому что вы можете его декодировать, то есть он уникален, то есть для каждого входа вы получаете уникальный вывод

Другие типы хэшей (например, умножение всех символов) не соответствуют этим критериям , потому что для двух разных входов вы можете получить один и тот же вывод (очень маловероятный, хотя и возможный), не будучи тогда чисто обратимым , ~ ссылается на оператор побитовый, а не .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...