【问题标题】:How do I generate a unique code based on the content?如何根据内容生成唯一代码?
【发布时间】:2019-06-17 09:15:37
【问题描述】:

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

那么,我该如何实现呢?有可能吗?

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

【问题讨论】:

  • 你所描述的一个哈希函数。
  • 如果你要做这样的事情,这看起来很奇怪,从电子邮件和密码的“代码生成”应该在服务器端完成,而不是在客户端。
  • 看起来你在重新发明一个轮子..
  • @KoshVery,看起来他正在重新发明轮子,摧毁它,从他的记忆中抹去它,死去,复活,然后重新发明轮子。再次。

标签: javascript identify generate


【解决方案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 运算符。

【讨论】:

  • 谢谢。但是有可能从数组中取出一个字符串吗?将数组保存到数据库感觉有点奇怪:P
  • @Erik 没有问题,如果你这样做 typeof code 结果将是一个字符串。如果您希望将代码限制在 [a-z][A-Z] 之间,这是可能的,但更复杂
  • 我希望它显示为27746TU8W38KR3A58P39,但我暂时不使用typeof code。非常感谢您的帮助:)
  • @Erik 你可以试试这个:stackoverflow.com/questions/7616461/…
  • @Erik 这只是该字符串唯一哈希的输出,符号不相关
猜你喜欢
  • 2011-07-30
  • 2018-06-27
  • 1970-01-01
  • 2017-06-28
  • 2011-04-05
  • 1970-01-01
  • 2017-06-17
  • 2011-08-19
  • 2019-03-08
相关资源
最近更新 更多