Usa JSL per crittografare gli script per lo sviluppo di componenti aggiuntiviMantengo un paio di componenti aggiuntivi e per alcuni di questi vorrei aggiornare un paio di variabili negli script contenuti al momento della compilazione. Quindi vorrei scrivere uno script che apre un file di script, esegue alcune concatenazioni o sostituzioni e quindi crittografa l'intero file e lo salva in una determinata posizione (per un elenco di file di script). Quindi posso usare il geniale add-in builder di @Justin_Chilton per creare i componenti aggiuntivi. Non riesco a trovare una funzione JSL per crittografare uno script, esiste o si può fare con un'altra utility?
Automazione e scriptingMiscelazione e pulizia dei datiRi: Utilizzare JSL per crittografare gli script per lo sviluppo di componenti aggiuntiviGrazie. Quella variabile era rimasta da una prima versione, prima che mi rendessi conto che voleva essere una soluzione JSON.
Questo è simile a ciò che fa JMP con un file PER (non JSON); puoi bloccare anche altre variabili, come il nome di un utente o di un sito, aggiungendole alla concatenazione.
Dovresti usare ShowGlobals() dopo aver eseguito la tua app per assicurarti che il tuo segreto non sia troppo facile da scoprire.
Ri: Utilizzare JSL per crittografare gli script per lo sviluppo di componenti aggiuntiviGrazie @Craige_Hales questa è una soluzione interessante che incorpora la data di scadenza e un checksum.
Piccola correzione per un errore di codifica nella riga 5:
mySecretKey = "The quick brown fox";
aa = [=> ];
aa["expiredate"] = "1jan2022";
aa["checkcode"] = Hex( Blob MD5( Char To Blob( mySecretKey || aa["expiredate"] ) ) );
Save Text File( "$temp/license.txt", As JSON Expr( aa ) );
///////////////////
bb = Parse JSON( Load Text File( "$temp/license.txt" ) );
If( Hex( Blob MD5( Char To Blob( mySecretKey || bb["expiredate"] ) ) ) == bb["checkcode"],
Print( "ok: " || bb["expiredate"] ),
Print( "bad" )
);
Ri: Utilizzare JSL per crittografare gli script per lo sviluppo di componenti aggiuntiviqualcosa come questo?
mySecretKey = "The quick brown fox";
aa = [=> ];
aa["expiredate"] = "1jan2022";
aa["checkcode"] = Hex( Blob MD5( Char To Blob( mySecretKey || expiredate ) ) );
Save Text File( "$temp/license.txt", As JSON Expr( aa ) );
///////////////////
bb = Parse JSON( Load Text File( "$temp/license.txt" ) );
If( Hex( Blob MD5( Char To Blob( mySecretKey || bb["expiredate"] ) ) ) == bb["checkcode"],
Print( "ok: " || bb["expiredate"] ),
Print( "bad" )
);
incorpora la chiave segreta nello script crittografato in modo da poterla controllare.
il file sembra
{"checkcode":"B7611676E821AA1ECC4CB5D6F02C6BA9","expiredate":"1gen2022"}
Ri: Utilizzare JSL per crittografare gli script per lo sviluppo di componenti aggiuntiviGrazie per i suggerimenti!
L'idea è di creare un componente aggiuntivo autodistruggente che funzioni per un po' e dopo un certo periodo smetta di funzionare (proteggi IP). Quindi, ogni volta che creo il componente aggiuntivo, voglio una nuova data di scadenza codificata nello script in modo che non possa essere annullata modificando un campo della data da qualche parte. Se inserisco la data di scadenza in un file di script esterno, devo crittografarlo manualmente ogni volta. Per lo stesso motivo una tabella dati non è un'opzione.
Ri: Utilizzare JSL per crittografare gli script per lo sviluppo di componenti aggiuntiviForse usa un file jsl/jmp/plaintext con solo i valori e include() o open() o loadtextfile() dallo script crittografato.
Una piccola tabella di dati potrebbe essere una buona scelta per un insieme di parametri denominati. O uno snippet di JSL incluso per impostare alcune variabili. Un file chiamato X.jsl con solo il testo 42 può essere caricato come parm = include("x.jsl"); e potresti fare insiemi più complicati con una lista se X contiene {42,"Fred"}, qualcosa come {parm,name} = include("x.jsl");
Ri: Utilizzare JSL per crittografare gli script per lo sviluppo di componenti aggiuntiviIl comando Encrypt Script può essere passato attraverso JSL utilizzando la funzione Main Menu().
Main Menu( "encrypt script","Script 10" );
dove "Script 10" è il nome della finestra dello script da crittografare.
Tuttavia, ciò che accade dopo è che viene visualizzata la finestra di dialogo che richiede le password e non penso che sia ciò che desideri