Utilizza 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 utilizzare il brillante generatore di componenti aggiuntivi di @Justin_Chilton per creare i componenti aggiuntivi. Non riesco a trovare una funzione JSL per crittografare uno script, esiste o può essere eseguita con un'altra utility?
ScriptingRi: Usa JSL per crittografare gli script per lo sviluppo di componenti aggiuntiviIl comando Encrypt Script può essere passato tramite JSL utilizzando la funzione Main Menu ().
Main Menu( "encrypt script","Script 10" );
dove "Script 10" è il nome della finestra di script da crittografare.
Tuttavia, ciò che accade dopo è che si apre la finestra di dialogo che chiede le password e non penso che sia quello che vuoi
Ri: Usa 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 un frammento di JSL incluso per impostare alcune variabili. Un file denominato X.jsl con solo il testo 42 può essere caricato come parm = include ("x.jsl"); e potresti creare insiemi più complicati con una lista se X contiene {42, "Fred"}, qualcosa come {parm, name} = include ("x.jsl");
Ri: Usa 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 una certa data smette di funzionare (protezione 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 script esterno, devo crittografarlo manualmente ogni volta. Per lo stesso motivo una tabella dati non è un'opzione.
Ri: Usa 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" )
);
incorporare la chiave segreta nello script crittografato in modo da poterlo controllare.
il file è simile
{"checkcode": "B7611676E821AA1ECC4CB5D6F02C6BA9", "expiredate": "1jan2022"}
Re: 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" )
);
Re: 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 quello che fa JMP con un file PER (non JSON); puoi bloccare anche altre variabili, come un nome utente o 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.