我正在尝试使用DES加密/解密。但是,解密不起作用。我一直收到错误:无法读取属性' charCodeAt'为null
解密来自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;
};
答案 0 :(得分:1)
使用:
"::#{model_name}".captialize.constantize
你首先加密然后url-encode。当你需要解密时,你需要首先进行url-decode然后解密 - 比如:
urlEncode(encrypt(decodedKey, value));
而不是解密,然后在尝试使用此语句时使用url-decode:
decrypt(decodedKey, urlDecode(em));
此外,请注意 DES 被视为不安全,应避免使用。使用安全密码,例如 AES 。