首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加密没有特殊字符的CryptoJS

加密没有特殊字符的CryptoJS
EN

Stack Overflow用户
提问于 2017-04-13 18:13:18
回答 5查看 8.6K关注 0票数 3

使用nodejs,我正在尝试为用户生成一个唯一的URL,以便用户与保持一致的电子邮件地址。从该URL中,用户将能够通过解密密文和将密文数据与数据库进行比较来验证电子邮件帐户。我使用CryptoJS来生成url。

let url = 'http://localhost:4000/newUser/get/'+ciphertext ;

问题是,在密文中,它包含正斜杠“/”例如:

http://localhost:4000/newUser/get/U2FsdGVkX189ZNKKQrYgqU90DDwkl/W3hRTSGO1yvUMaDilPJmz9YYI3d1/E3i9C

路由器是在URL上处理“/”,因此路由器正在搜索实际上是密文一部分的目录。如果有任何解决方案不包括“/”或特殊字符的密文,请帮助。预先谢谢.

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2018-08-28 14:31:32

您可以轻松地用以下任何文本替换特殊字符:

代码语言:javascript
复制
ciphertext.toString().replace('+','xMl3Jk').replace('/','Por21Ld').replace('=','Ml32');

不要忘记用特殊字符替换这些字符串。

代码语言:javascript
复制
dataString.toString().replace('xMl3Jk', '+' ).replace('Por21Ld', '/').replace('Ml32', '=');

希望这有助于解决你的问题。

票数 6
EN

Stack Overflow用户

发布于 2020-04-07 09:57:46

然而,.replace()只会取代第一次出现。

更准确地说,您可以使用以下内容:

代码语言:javascript
复制
// 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);

票数 4
EN

Stack Overflow用户

发布于 2020-08-13 05:11:38

IMHO @JaiKumarRajput的答复

他用,

代码语言:javascript
复制
ciphertext.toString().replace('+','xMl3Jk').replace('/','Por21Ld').replace('=','Ml32');

现在,我不知道xMl3JkPor21LdMl32是如何工作的。所以,我也不知道它会不会弄乱我的绳子。

另外,我也要在解码的时候做这个。所以,为什么我不使用这样的东西(已经存在的东西),

代码语言:javascript
复制
encodeURIComponent(ciphertext.toString('base64'))

我知道它仍然引入了% char。但是随着它在URL中的使用。其中有一个逃逸焦炭。

怎么会比做一些可能搞乱我的代码的事情更重要呢?

注:我使用它,没有问题,这并不意味着我也没有发现任何问题的顶部。感觉不太整洁。这只是我的卑微意见,所以如果你不喜欢?忽略它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43399093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档