ForgeTotal.js 5
pt

Total.js 5

Cifrar e decifrar dados com uma chave

Total.js 5 · total5@0.0.19 securitycrypto Executada com o Total.js 5

ENCRYPT(value, key) serializa um valor para JSON e devolve um texto opaco. DECRYPT(text, key) devolve o valor original, ou null quando o texto foi alterado, não é válido ou foi cifrado com outra chave. A definição secret da sua config é misturada na chave, pelo que os tokens criados numa instalação não abrem noutra.

Use-o para ligações de redefinição de palavra-passe, tokens de convite e tudo o que entrega a um cliente e verifica mais tarde sem guardar. Coloque uma expiração dentro do valor (um carimbo de data/hora) e verifique-a depois de decifrar.

config
secret : change-this-secret-in-production
controllers/tokens.js
exports.install = function() {
	ROUTE('GET /token/', create);
	ROUTE('GET /verify/', verify);
};

function create($) {
	var token = ENCRYPT({ userid: '123', expire: Date.now() + 60000 }, 'reset-password');
	$.json({ token: token });
}

function verify($) {

	var data = DECRYPT($.query.token || '', 'reset-password');

	if (!data || data.expire < Date.now()) {
		$.invalid(401);
		return;
	}

	$.json({ userid: data.userid });
}