cookie比较
::cfe3ca5d662b0252292d4da9e486430fded7311233aa31354997d626ac1cb98caacb16a34b458ab7bb60a9310790524e1f7ef090dfbcfa424e5a03632c1d89eb::..
到...::cfe3ca5d662b0252292d4da9e486430fded7311233aa31354997d626ac1cb98caacb16a34b458ab7bb60a9310790524e1f7ef090dfbcfa424e5a03632c1d89eb::
test:false
console.log('test: ' + ( hash.digest('hex') === v ));
我检查过typeof是字符串和长度值是否相同所以没有不可见的空格或特殊字符技巧。我已经尝试了==和===以及valueOf以确定。我没有尝试可以在:: tokens之间获得这两个字符串来评估为相等或真。我没有得到它,而且我已经做了很长一段时间的JS。
答案 0 :(得分:1)
https://nodejs.org/api/crypto.html#crypto_hash_digest_encoding:
调用
Hash
方法后,hash.digest()
对象无法再次使用。多次调用将导致抛出错误。
你称之为三次次:
console.log('cookie compare::' + hash.digest('hex').valueOf() + '::.. to ...::' + v + '::' );
console.log('test: ' + ( hash.digest('hex') === v ));
if ( hash.digest('hex') === v ) { console.log( '---- OK ----'); return true; }
在这种情况下,不会抛出错误,但是第二次调用hash.digest()
时它会返回一个空字符串(至少对我而言),因此它与v
不匹配。
解决方案:将hash.digest('hex')
的返回值存储在变量中并重复使用。