Maksud kod: Bina penyahkod GADERYPOLUKI yang ringkas
GADERYPOLUKI ialah cypher penggantian ringkas yang digunakan dalam pengintipan untuk menyulitkan mesej Penyulitan adalah berdasarkan kunci yang pendek dan mudah diingati sebagai huruf berpasangan, yang terdapat dalam penggantian ringkas.
contoh:
encode("ABCD", "agedyropulik"); // => GBCE
Kod adalah seperti berikut Saya ingin menggunakan fungsi eval untuk membina fungsi yang boleh menggantikan aksara, tetapi ia seolah-olah tidak berguna.
function decode(str,key) {
key = key.split('')
while (key.length>0) {
let b = key.pop(), a = key.pop();
eval(`str.replace(/${a}/g, "${b}")`)
eval(`str.replace(/${a.toUpperCase()}/g, "${b.toUpperCase()}")`)
eval(`str.replace(/${b}/g, "${a}")`)
eval(`str.replace(/${b.toUpperCase()}/g, "${a.toUpperCase()}")`)
console.log(a, b, str, `str.replace(/${a}/g, "${b}")`)
}
return str
}
console.log(decode("Hmdr nge brres", "gaderypoluki"))
console.log("Hmdr nge brres".replace(/g/g, "a"))
>>> k i Hmdr nge brres str.replace(/k/g, "i")
l u Hmdr nge brres str.replace(/l/g, "u")
p o Hmdr nge brres str.replace(/p/g, "o")
r y Hmdr nge brres str.replace(/r/g, "y")
d e Hmdr nge brres str.replace(/d/g, "e")
g a Hmdr nge brres str.replace(/g/g, "a")
Hmdr nge brres
Hmdr nae brres
replace tidak mengubah nilai asal, tetapi mengembalikan rentetan baharu.
Malah, anda boleh menggunakan
new RegExp(a, 'g')
dan anda tidak memerlukan eval