简单代码:
encodeURIComponent("\uDDBA")
结果:
URIError: URI malformed
我正在尝试做一个简单的加密,它将接受一些用户输入的文本和密码,然后它将加密该文本并将其保存到服务器。
基本上我正在尝试编码一个字母“t” - 并且算法已经确定应该是 56762 或 DDBA 十六进制。
但是,如果我尝试使用 encodeURIComponent 对该字符进行编码,那么某些十六进制值似乎会导致错误。
我该如何解决这个问题?
我基本上需要知道可以正确通过javascript中的encodeURIComponent的可用字符范围。
目前我正在做这样的事情:
var xor = 0xDDCE;
var plainText = "t".charCodeAt(0);
var encoded = plainText ^ xor;
var encodedChar = String.fromCharCode(encoded);
var uri = "/someuri?character=" + encodeURIComponent(encodedChar);
// This is how i would get the plain text back
var decoded = encodedChar.charCodeAt(0) ^ xor;
var decodedChar = String.fromCharCode(decoded);
这是一个非常简化的版本,其中异或值是静态的。在实际情况下,xor 值将基于一堆变量来计算。
假设“/someuri”不是由我构建的,并且最初并不是为了接收加密数据而构建的,我只是想使用这个 URI。
此外,我的加密算法可以更改。该xor
值将使用一个相当简单的算法生成,该算法使用用户输入的密码和字符的位置。
我正在考虑使这项工作的一种方法是减少可能的输出字符的总数并执行某种映射......但我无法真正想象代码。
编辑:
感谢您对我选择的加密的安全性发表评论;然而,实际的数据安全方面并不那么重要。我只是想防止“普通”人能够阅读输出的加密文本(假设可能有很多)