Faizal I

Faizal I

  • NA
  • 54
  • 711

Need equivalent c# code for implementation

Jul 6 2020 5:04 AM
I have one .net application where I need to call an API. That API needs value to be encrypted with AES algorithm with Hashing. That API is developed in Java. I am not able to find equivalent .net code to encrypt and decrypt as done in Java..
 
Attached Java code here.
 
Need equivalent c# code.
 
I was trying below code but it didnt work
  1. public byte[] AES_Encrypt(byte[] bytesToBeEncrypted, byte[] passwordBytes) {  
  2.  byte[] encryptedBytes = null;  
  3.  // Set your salt here, change it to meet your flavor:   
  4.  // The salt bytes must be at least 8 bytes.   
  5.  byte[] saltBytes = new byte[] {  
  6.   1,  
  7.   2,  
  8.   3,  
  9.   4,  
  10.   5,  
  11.   6,  
  12.   7,  
  13.   8  
  14.  };  
  15.  using(MemoryStream ms = new MemoryStream()) {  
  16.   using(RijndaelManaged AES = new RijndaelManaged()) {  
  17.    AES.KeySize = 256;  
  18.    AES.BlockSize = 128;  
  19.    var key = new Rfc2898DeriveBytes(passwordBytes, saltBytes, 1000);  
  20.    AES.Key = key.GetBytes(AES.KeySize / 8);  
  21.    AES.IV = key.GetBytes(AES.BlockSize / 8);  
  22.    AES.Mode = CipherMode.CBC;  
  23.    using(var cs = new CryptoStream(ms, AES.CreateEncryptor(), CryptoStreamMode.Write)) {  
  24.     cs.Write(bytesToBeEncrypted, 0, bytesToBeEncrypted.Length);  
  25.     cs.Close();  
  26.    }  
  27.    encryptedBytes = ms.ToArray();  
  28.   }  
  29.  }  
  30.  return encryptedBytes;  
  31. }  
  32. public byte[] AES_Decrypt(byte[] bytesToBeDecrypted, byte[] passwordBytes) {  
  33.  byte[] decryptedBytes = null;  
  34.  // Set your salt here, change it to meet your flavor:   
  35.  // The salt bytes must be at least 8 bytes.   
  36.  byte[] saltBytes = new byte[] {  
  37.   1,  
  38.   2,  
  39.   3,  
  40.   4,  
  41.   5,  
  42.   6,  
  43.   7,  
  44.   8  
  45.  };  
  46.  using(MemoryStream ms = new MemoryStream()) {  
  47.   using(RijndaelManaged AES = new RijndaelManaged()) {  
  48.    AES.KeySize = 256;  
  49.    AES.BlockSize = 128;  
  50.    var key = new Rfc2898DeriveBytes(passwordBytes, saltBytes, 1000);  
  51.    AES.Key = key.GetBytes(AES.KeySize / 8);  
  52.    AES.IV = key.GetBytes(AES.BlockSize / 8);  
  53.    AES.Mode = CipherMode.CBC;  
  54.    using(var cs = new CryptoStream(ms, AES.CreateDecryptor(), CryptoStreamMode.Write)) {  
  55.     cs.Write(bytesToBeDecrypted, 0, bytesToBeDecrypted.Length);  
  56.     cs.Close();  
  57.    }  
  58.    decryptedBytes = ms.ToArray();  
  59.   }  
  60.  }  
  61.  return decryptedBytes;  
  62. }  

Answers (1)