2017-06-01 150 views
0

我正在嘗試使用DES加密/解密。但是,解密不起作用。我不斷收到錯誤:無法讀取空的特性「charCodeAt」DES與urlENcode加密(加密)

解密是http://www.tero.co.uk/des/

我使用這個編碼:

var decodedKey = decodeBase64(key); 
var em = urlEncode(encrypt(decodedKey, value)); 

,然後我試圖使用此功能解密:

var emD = urlDecode(decrypt(decodedKey, em)) 

function encrypt(key, message) { 
     var ciphertext = des(key, message, 1, 0, null, 1); 
     var encodedCiphertext = encodeBase64(ciphertext); 
     return encodedCiphertext; 

     } 

     function decrypt(key,message) { 
     var ciphertext = des(key, message, 0, 1, null,1); 
     var plainText = decodeBase64(ciphertext); 
     return plainText; 
     }; 

回答

1

有了:

urlEncode(encrypt(decodedKey, value)); 

你第一次加密然後URL編碼。當你需要解密,你需要先URL解碼然後解密 - 這樣的:

decrypt(decodedKey, urlDecode(em)); 

,而不是因爲你這個說法嘗試解密,然後URL解碼:

urlDecode(decrypt(decodedKey, em)); 

而且,請注意,DES被認爲是不安全應該避免。使用安全密碼,如AES