Il mio scenario è leggermente diverso dal Q & esistente come su questo argomento e forse appartiene a più di una categoria, ma siccome il codice seguente è basato su AppleScript / Shell, ho capito che questo è il punto di partenza.
Scenario
Sto lavorando a un metodo di autenticazione che prevede la crittografia di una password di autenticazione sul lato client utilizzando una chiave pubblica RSA che corrisponde alla chiave privata del mio (il server). Un salt random viene hash con la password di autenticazione per ridurre la possibilità di duplicare il testo crittografato.
La stringa crittografata viene quindi passata come parametro in una pagina PHP in cui viene decifrata, salt saltata e password di autenticazione letta.
Finora ...
set public_key to "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDoq9oD/YlxvkvYcKAd06Pn0nKb4bwGYiXFVkL6LGI3gzDFwxAKjt4AVE3pRHgi0tTPVHkGZRfH723+mF0Fe5Vdq7mGDzKB7EAWzkPLThxIRmvCbnbI3o/OCcRlDuBa7+GIjlnqRoQywg7PTYWXUEls5P/12TC7znhwmjk++9KWOwIDAQAB"
set theData to "This is my auth password."
set salt to generateSalt(random number from 10 to 50)
set dataToEnc to salt & "-" & theData
--set encrypt to do shell script ("openssl rsautl -encrypt -inkey public_key -pubin -in \"" & dataToEnc & "\" -out encrypt.dat")
--log encrypt
on generateSalt(numChars)
do shell script "generateSalt() {
[[ -c /dev/urandom ]] || { echo 'ERROR: Random source /dev/urandom not available.' >&2; return 1; }
LC_ALL=C tr -cd '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' < /dev/urandom | head -c $1
}
generateSalt " & numChars
end generateSalt
Generare il sale e concatenare la stringa è semplice, ma è qui che sono bloccato:
- Come implementare lo script di crittografia corretto con la chiave hardcoded definita in alto, INSTEAD OF che fa riferimento al file .pem che è stato generato tramite la creazione di gen RSA?
- Come immagazzino il risultato cifrato in una variabile INSTEAD OF un file?
So che ci sono variazioni delle mie domande a cui è già stata data una risposta, ma dopo ore di ricerche non sono ancora più vicino e spero che qualcuno possa aiutare. Per favore fatemi sapere se qualcosa richiede chiarimenti.