import 'package:gainer_crypto/crypto.dart'; class EncryptPassword{ encrypt(String senhaDigitada,String senhaUsuario) { // Deixa e senha digitada em maiuscula var senha = senhaDigitada.toUpperCase(); // Faz a criptografia da senha inserida String senhaMD5 = grHashString(GRCryptoType.md5, senha); // Retira o tipo (1, 2 ou 3) da senha do Usuário int tipo = int.parse(senhaUsuario.substring(0, 1)); // Define a possição inicial da quebra da senha int posI = 0; int posF = 0; int posMax = 0; // Pra cada tipo (1, 2 ou 3) define a posição inicial da quebra da senha if(tipo == 1){ posI = 0; posF = 16; posMax = 16; } else if(tipo == 2){ posI = 16; posF = 0; posMax = 16; } else if(tipo == 3){ posI = 0; posF = 31; posMax = 1; } print('posI $posI posF $posF PosMax $posMax'); print('inicio ${senhaMD5.substring(0, 16)}'); print('meio ${senhaMD5.substring(16, 32)}'); print('fim ${senhaMD5.substring(posF, posMax)}'); print('senha: ${senhaMD5.substring(posI, posMax) + senha + senhaMD5.substring(posF, posMax)}'); print('${grHashString(GRCryptoType.sha1, senhaMD5.substring(posI, posMax) + senha + senhaMD5.substring(posF, posMax))}'); // Faz a criptografia e concatena ela com sha1 e md5 String senhaCriptogradafa = tipo.toString() + '\$'+ grHashString(GRCryptoType.sha1, senhaMD5.substring(posI, posMax) + senha + senhaMD5.substring(posF, posMax)); // Retorna a senha criptografada return senhaCriptogradafa; } }