using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
namespace GeradorToken
{
public class Chave2Token
{
public string chave { get; set; }
public string token
{
get
{
return gerar();
}
}
private string gerar()
{
// Cria o salte baseado na data hora e minuto UTC
string senhaInterna = chave;
string dateUTC = DateTime.UtcNow.ToString("ddMMyyyyHHmm");
byte[] Salt = Encoding.ASCII.GetBytes(senhaInterna.Length.ToString());
// Cria uma chave secreta baseada no salt
PasswordDeriveBytes chaveScreta = new PasswordDeriveBytes(senhaInterna, Salt,"SHA1",1);
// Cripitografa a chave secreta
RijndaelManaged RijndaelCipher = new RijndaelManaged();
ICryptoTransform encripitador = RijndaelCipher.CreateEncryptor(chaveScreta.GetBytes(16), chaveScreta.GetBytes(16));
// Acionado a Chave ao objeto em memoria para realizar a o encript do TOKEN
MemoryStream memoryStream = new MemoryStream();
CryptoStream encripChave = new CryptoStream(memoryStream, encripitador, CryptoStreamMode.Write);
// Montagem do Token sobre a senha forneceida pela APISUL
byte[] planoTexto = System.Text.Encoding.Unicode.GetBytes(dateUTC);
encripChave.Write(planoTexto, 0, planoTexto.Length);
encripChave.FlushFinalBlock();
byte[] tokenBytes = memoryStream.ToArray();
memoryStream.Close();
encripChave.Close();
// Transfere o TOKEN para Base
string token = Convert.ToBase64String(tokenBytes);
return token;
}
}
}
|