您输入的图片。对于您添加的每个字符(包括特殊字符,如@ . # ¤ % & ~
等),将根据内容生成唯一代码。哈哈!此唯一代码长度仅为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中的数据库哈希值中,但我不知道如何以另一种方式识别登录。如果你知道更好的方法,请告诉我。
那么,我该如何做到这一点?它甚至可以吗?
我知道如何生成不基于内容的唯一代码(例如,生成密码),但我不知道如何基于内容生成唯一的代码。
我不知道目的,但直接回答你关于如何生成基于内容的唯一代码的问题,你可以有这样的东西
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算子。