使用nodejs,我正在尝试为用户生成一个唯一的URL,以便用户与保持一致的电子邮件地址。从该URL中,用户将能够通过解密密文和将密文数据与数据库进行比较来验证电子邮件帐户。我使用CryptoJS来生成url。
let url = 'http://localhost:4000/newUser/get/'+ciphertext ;
问题是,在密文中,它包含正斜杠“/”例如:
http://localhost:4000/newUser/get/U2FsdGVkX189ZNKKQrYgqU90DDwkl/W3hRTSGO1yvUMaDilPJmz9YYI3d1/E3i9C
路由器是在URL上处理“/”,因此路由器正在搜索实际上是密文一部分的目录。如果有任何解决方案不包括“/”或特殊字符的密文,请帮助。预先谢谢.
发布于 2018-08-28 14:31:32
您可以轻松地用以下任何文本替换特殊字符:
ciphertext.toString().replace('+','xMl3Jk').replace('/','Por21Ld').replace('=','Ml32');不要忘记用特殊字符替换这些字符串。
dataString.toString().replace('xMl3Jk', '+' ).replace('Por21Ld', '/').replace('Ml32', '=');希望这有助于解决你的问题。
发布于 2020-04-07 09:57:46
然而,.replace()只会取代第一次出现。
更准确地说,您可以使用以下内容:
// Original Text
var ciphertext = 'asda+dasd+asdas/asdasd/sadasdasd/dadasd=adsasda=dasd=';
// Replaced Text
var dataString = ciphertext.replace(/\+/g,'p1L2u3S').replace(/\//g,'s1L2a3S4h').replace(/=/g,'e1Q2u3A4l');
console.log(dataString);
// Back to Original Text
ciphertext = dataString.replace(/p1L2u3S/g, '+' ).replace(/s1L2a3S4h/g, '/').replace(/e1Q2u3A4l/g, '=');
console.log(ciphertext);
发布于 2020-08-13 05:11:38
IMHO @JaiKumarRajput的答复
他用,
ciphertext.toString().replace('+','xMl3Jk').replace('/','Por21Ld').replace('=','Ml32');现在,我不知道xMl3Jk,Por21Ld,Ml32是如何工作的。所以,我也不知道它会不会弄乱我的绳子。
另外,我也要在解码的时候做这个。所以,为什么我不使用这样的东西(已经存在的东西),
encodeURIComponent(ciphertext.toString('base64'))我知道它仍然引入了% char。但是随着它在URL中的使用。其中有一个逃逸焦炭。
怎么会比做一些可能搞乱我的代码的事情更重要呢?
注:我使用它,没有问题,这并不意味着我也没有发现任何问题的顶部。感觉不太整洁。这只是我的卑微意见,所以如果你不喜欢?忽略它。
https://stackoverflow.com/questions/43399093
复制相似问题