Home > Net >  convert this function c# encryption and decryption to Dart/Flutter?
convert this function c# encryption and decryption to Dart/Flutter?

Time:01-15

welcome everybody I moved from xamarin to Flutter I encountered some problems Including encryption and decryption How can I convert this function to Dart/Flutter? This function is required to communicate with the api Thank you everyone

    public static string encryp(string x, string encrypt)//function
    {
        try
        {

            string y = x;
            byte[] etext = UTF8Encoding.UTF8.GetBytes(y);
            string Code = encrypt;
            MD5CryptoServiceProvider mdhash = new MD5CryptoServiceProvider();
            byte[] keyarray = mdhash.ComputeHash(UTF8Encoding.UTF8.GetBytes(Code));
            TripleDESCryptoServiceProvider tds = new TripleDESCryptoServiceProvider();
            tds.Key = keyarray;
            tds.Mode = CipherMode.ECB;
            tds.Padding = PaddingMode.PKCS7;

            ICryptoTransform itransform = tds.CreateEncryptor();
            byte[] result = itransform.TransformFinalBlock(etext, 0, etext.Length);
            string encryptresult = Convert.ToBase64String(result);
            return encryptresult.ToString();
        }
        catch (Exception ex)
        {
            return (ex.Message==null ?"": ex.Message);
        }
    }


    public static string decrypt(string x, string keyai)
    {
        try
        {
            string y = x.Replace("\0", null);
            byte[] etext = Convert.FromBase64String(y);
            string key = keyai;
            MD5CryptoServiceProvider mdhash = new MD5CryptoServiceProvider();
            byte[] keyarray = mdhash.ComputeHash(UTF8Encoding.UTF8.GetBytes(key));
            TripleDESCryptoServiceProvider tds = new TripleDESCryptoServiceProvider();
            tds.Key = keyarray;
            tds.Mode = CipherMode.ECB;
            tds.Padding = PaddingMode.PKCS7;

            ICryptoTransform itransform = tds.CreateDecryptor();
            byte[] result = itransform.TransformFinalBlock(etext, 0, etext.Length);
            string dencryptresult = UTF8Encoding.UTF8.GetString(result);
            return dencryptresult.ToString();
        }
        catch (Exception ex)
        {
            return (ex.Message==null ?"": ex.Message);
        }
    }

update I wrote this code on Flutter

    import 'package:dart_des/dart_des.dart';

    var bytes = new List<int>.from(utf8.encode("dcba"));
    var key = md5.convert(utf8.encode("abcd")).bytes;
    DES3 mDes3CBC = DES3(
    key: key,
    mode: DESMode.ECB,
    paddingType: DESPaddingType.PKCS7,
    );
    final encrypted = mDes3CBC!.encrypt(bytes);
    print(encrypted);

CodePudding user response:

Consider using this tool: "Use the tool e.g. for porting your Xamarin/UWP project to Flutter"

Otherwise, there is a pretty easy Flutter Encrypt package here

//Package example
import 'package:encrypt/encrypt.dart';

void main() {
  final plainText = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit';
  final key = Key.fromUtf8('my 32 length key................');
  final iv = IV.fromLength(16);

  final encrypter = Encrypter(AES(key));

  final encrypted = encrypter.encrypt(plainText, iv: iv);
  final decrypted = encrypter.decrypt(encrypted, iv: iv);

  print(decrypted); // Lorem ipsum dolor sit amet, consectetur adipiscing elit
  print(encrypted.base64); // R4PxiU3h8YoIRqVowBXm36ZcCeNeZ4s1OvVBTfFlZRdmohQqOpPQqD1YecJeZMAop/hZ4OxqgC1WtwvX/hP9mw==
}

CodePudding user response:

After research and experiments, this result was correct

    import 'package:dart_des/dart_des.dart';

    var bytes = new List<int>.from(utf8.encode("dcba"));
    var key = md5.convert(utf8.encode("abcd")).bytes; //Any characters here are valid as a key
    DES3 mDes3CBC = DES3(
    key: key,
    mode: DESMode.ECB,
    paddingType: DESPaddingType.PKCS7,
    );
    final encrypted = mDes3CBC!.encrypt(bytes);
    print(encrypted);
  •  Tags:  
  • Related