【问题标题】:Decrypt a string using Base64 decode in angularJS在angularJS中使用Base64解码解密字符串
【发布时间】:2016-01-14 10:55:49
【问题描述】:

我正在使用 Base64 加密从 JAVA 代码发送到 Angular 的令牌:

  String token = "1345BCHCNB";
  Cipher ecipher = Cipher.getInstance("AES");
  String mykey = "1234567891234567";
  SecretKey key = new SecretKeySpec(mykey.getBytes(), "AES");
  ecipher.init(Cipher.ENCRYPT_MODE, key);
  byte[] utf8 = token.getBytes("UTF-8");
  byte[] enc = ecipher.doFinal(utf8);
  String enctoken = Base64.encodeBase64(enc).toString());

现在我想在 Angular 端解密它。我无法弄清楚如何将其转换回实际令牌

【问题讨论】:

  • 您使用 AES 进行加密。 Base64 不加密任何东西。到目前为止,您尝试过什么?
  • 请记住,在不安全的通道 (HTTP) 上使用对称加密只是有点混淆,并不能提供任何真正的安全性。如果你使用 HTTPS,那么你可以直接发送你的令牌而不加密它。查看更多:Javascript Cryptography Considered Harmful
  • Stack Overflow 不是代码翻译服务。选择一个支持 AES encryption 和 Base64 encoding 的库并尝试自己复制它。如果你遇到问题,那么你可以提出一个具体的问题。
  • @ArtjomB。您可能想要扩展:“在不安全的通道 (HTTP) 上使用对称加密只是一点点混淆,并且不提供任何真正的安全性”,考虑到 https 使用对称加密发送数据。我觉得这种说法过于笼统。当然,使用 HTTPS 是更好地满足用户需求的解决方案。
  • @zaph 是的,你是对的。我忘记了“only”这个小词。 Rajat 的澄清:如果用于加密某些数据的对称密钥与密文一起发送,那么观察流量的攻击者可以轻松地使用该密钥来解密嗅探到的密文。另一方面,如果对称密钥与非对称加密(RSA,Diffie-Hellman)正确共享,则不必以明文形式发送给客户端,因此可以提供适当的安全性。可能还有其他攻击可能,因此最好使用经过审查的原语,例如 TLS。

标签: javascript java angularjs encryption


【解决方案1】:

Base64 与加密无关,但它是一种编码风格。您可以随时获取原始数据,无需密钥或任何秘密。

在 Javascript 中,它是使用函数 btoa 和 atob 实现的。

更多信息在这里:http://www.w3schools.com/jsref/met_win_atob.asp

还有一个相关话题:Base64 encoding and decoding in client-side Javascript

对于 AES 部分,你可以看看这个主题:How to decrypt message with CryptoJS AES. I have a working Ruby example

【讨论】:

  • 实际上,Base64 与加密无关,也与散列无关。这是关于编码。散列算法是不可逆的,编码算法是可逆的。如果您散列一个值,您将无法使用某些反向算法获得原始数据。如果您对数据进行编码,则可以对其进行解码并取回原始数据。
  • 那么什么是保存我的实际令牌不被其他人看到的最佳方法
  • 看看我给你的链接。他们解释了如何从客户端 Javascript 应用程序中反转您的加密/编码(使用 CryptoJS+window.atob)
  • 我尝试使用 atob 解码,但出现错误:“错误:无法在 'Window' 上执行 'atob':要解码的字符串未正确编码。”
  • 这确实是一个无效值(百分比和酒精基)。调用 encodeBase64 后不应调用“toString”。字节数组上的 toString 不会将其转换为正确的字符串,但会在内存中显示其地址。改用 new String(enc, "UTF-8")
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多