如何根据内容生成唯一代码?

问题描述 投票:0回答:1

您输入的图片。对于您添加的每个字符(包括特殊字符,如@ . # ¤ % & ~等),将根据内容生成唯一代码。哈哈!此唯一代码长度仅为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中的数据库哈希值中,但我不知道如何以另一种方式识别登录。如果你知道更好的方法,请告诉我。

那么,我该如何做到这一点?它甚至可以吗?

我知道如何生成不基于内容的唯一代码(例如,生成密码),但我不知道如何基于内容生成唯一的代码。

javascript identify generate
1个回答
1
投票

我不知道目的,但直接回答你关于如何生成基于内容的唯一代码的问题,你可以有这样的东西

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));

这段代码不仅仅是一个哈希,因为你可以解码它,这意味着它是唯一的,也就是说,对于每一个输入,你都得到一个独特的输出

其他类型的哈希(例如乘以所有字符)do not fulfil these criteria,因为对于两个不同的输入,您可能获得相同的输出(尽管可能性非常小),而不是纯粹可逆的。 ~参考了bitwise not算子。

© www.soinside.com 2019 - 2024. All rights reserved.