簡單代碼:嘗試通過URI發送加密的文本 -/uDDBA造成 「的URIError:URI格式不正確」
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
值將使用一個相當簡單的算法使用用戶輸入的密碼和字符的位置生成。
我正在考慮一種方法,使這項工作將是減少可能的輸出字符的總數,並執行某種類型的映射......但我無法真正描繪代碼。
編輯:我選擇的加密的安全
評論表示讚賞;但是,實際的數據安全方面並不重要。我只是想防止「平均」的人能夠讀取輸出加密文本(假設可以有很多很多的)
謝謝我會研究你的答案一點。但是對於數據安全的無用性,我想提一件事 - 我不在乎攻擊者是否試圖假裝知道純文本,我真的只關心攻擊者無法讀取純文本。加密的數據顯示在我不擁有的公共網站上,我只希望我和我已經給出密碼的人能夠閱讀它。當然,有人可能會破壞安全,我只想爲普通人提供足夠的東西。 – codefactor 2013-04-06 15:52:01