【问题标题】:How to pass encripted data pass by url in angular 8如何在 Angular 8 中通过 url 传递加密数据
【发布时间】:2020-07-05 18:42:58
【问题描述】:

试图在 Angular 8 中通过 url 传递加密数据但由于加密数据包含 / 导致 url 无法正常打开而无法正常工作。那么如何在 Angular 8 中通过 url 传递加密数据。如果知道,请帮助任何人。

我们可以在没有特殊字符的情况下加密数据吗?有可能吗?

示例:U2FsdGVkX18+ijuMYTf/b2jVWBRoAGWMJ+AnFlwodjE= 这个数据有 / 所以 url 不会打开。如何解决此问题。

这样写:

     let encriptionData =  CryptoJS.AES.encrypt("test@gmail.com", 'secret key 123').toString();

我正在传递这样的加密数据

var url = "http://localhost:4200/content/" + encriptionData;

router.module.ts:

 { path : 'content/:id' , component : contentComponent },

content.component.ts:

 //url is http://localhost:4200/content/U2FsdGVkX18+ijuMYTf/b2jVWBRoAGWMJ+AnFlwodjE=

 this._Activatedroute.paramMap.subscribe(params => { 

    var bytes  = CryptoJS.AES.decrypt(params.get('id'), 'secret key 123');
    this.decryptedMailid = bytes.toString(CryptoJS.enc.Utf8);  
    console.log(this.decryptedMailid); 

  });

【问题讨论】:

  • 如果可能,我建议您在更改路径之前对加密数据进行 url 编码
  • @ShamPooSham:如何加密没有特殊字符的数据?
  • 您可以在加密数据上使用encodeURIComponent
  • @ShamPooSham:拜托..你能编辑我的代码吗?怎么办?
  • @ShamPooSham:如果我使用 encodeURIComponent 如何对其进行解码以进行解密?

标签: node.js typescript angular8 cryptojs


【解决方案1】:

您可以对加密字符串进行编码,然后在解密之前对其进行解码。

 let encryptedData =  encodeURIComponent(CryptoJS.AES.encrypt("test@gmail.com", 'secret key 123').toString());

现在,您的网址将是http://localhost:4200/content/U2FsdGVkX18%2BijuMYTf%2Fb2jVWBRoAGWMJ%2BAnFlwodjE%3D,而不是http://localhost:4200/content/U2FsdGVkX18+ijuMYTf/b2jVWBRoAGWMJ+AnFlwodjE=

在 content.component.ts 中,您可以执行以下操作来反转操作:

this._Activatedroute.paramMap.subscribe(params => { 

    var bytes  = CryptoJS.AES.decrypt(params.get('id'), 'secret key 123');
    this.decryptedMailid = decodeURIComponent(bytes.toString(CryptoJS.enc.Utf8));  
    console.log(this.decryptedMailid); 

});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 2021-07-14
    • 2018-11-27
    相关资源
    最近更新 更多