javascript - JS menggunakan eval untuk membina fungsi ganti adalah tidak sah
phpcn_u1582
phpcn_u1582 2017-07-05 10:47:23
0
1
871

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

phpcn_u1582
phpcn_u1582

membalas semua(1)
扔个三星炸死你

replace tidak mengubah nilai asal, tetapi mengembalikan rentetan baharu.

Malah, anda boleh menggunakan new RegExp(a, 'g') dan anda tidak memerlukan eval

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan