title: 3DES base64 encrypt in java and c#
body: <p>I have the next java file:</p>
  
  <pre><code>import java.io.UnsupportedEncodingException;
  import java.security.AlgorithmParameters;
  
  import javax.crypto.Cipher;
  import javax.crypto.spec.IvParameterSpec;
  import javax.crypto.spec.SecretKeySpec;
  
  import org.apache.commons.codec.binary.Base64;
  
  
  public class CifrarAyuda_jc {
  
       public static void main(String[] args) {
  
       try {
  
         decodificarBase64("SislaftUAFramework20150730890567");
         decodificarBase64("SislaftUA15=");
       } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
       }
  
     }
  
  
  
  /**
    * Descencripta un texto encriptado utilizando claves proporcionadas como
    * parámetros.
    * 
    * @param textoCifrado
    *            Texto encriptado y codificado en Base 64
    * @param clave1        Clave 1
    * @param clave2        Clave 2 vector
    * @return Texto desencriptado
    * @throws Exception      En caso de error en el proceso
    */
  
  
  
    /**
    * Encripta un texto determinado utilizando claves provistas como argumentos
    * 
    * @param textoNoCifrado
    * @param clave1      Clave 1
    * @param clave2      Clave 2 vector
    * @return Texto encriptador y codificado en Base 64
    * @throws Exception      En caso de error en el proceso
    */
  
    /**
    * Decodificar a base 64
    * @param cadena      Cadena a decodificar
    * @return          Array de bytes
    */
    private static byte[] decodificarBase64(String cadena){
      try {            
  
        System.out.println("Cadena Ingresada: " + cadena);
  
        int i =0;
        System.out.println("Cadena Antes del Base64.decodeBase64");
        for (Byte b:cadena.getBytes("ISO-8859-1")) {
          System.out.println("[" + i + "] = " + b);
          i+=1;        
        } // end of for
  
        byte [] arreglo = Base64.decodeBase64(cadena.getBytes("ISO-8859-1"));
        System.out.println("Cadena Despues del Base64.decodeBase64");
        System.out.println("Cadena Despues del Base64.decodeBase64 " + arreglo.ToString() );
        i =0;
        for (Byte b:arreglo) {
          System.out.println("[" + i + "] = " + b);
          i+=1;        
        } // end of for
  
        return arreglo;
      } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
      }
      return null;
    }
  }
  </code></pre>
  
  <p>I try to code this in C# using the next function</p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;
  using System.Threading.Tasks;
  using System.Security.Cryptography;
  
  namespace Encripta3DES
  {
      class Program
      {
          static void Main(string[] args)
          {
  
              //Console.WriteLine(Encriptar("13-07-2015 17:17:23","SislaftUAFramework20150730890567","SislaftUA15="));
              EncodeBase64("SislaftUAFramework20150730890567");
              Console.ReadLine();
  
          }
  
          public static string EncodeBase64(string toEncode)
          {
  
              int i = 0;
  
              Console.WriteLine("Cadena Ingresada: " + toEncode);
              //byte[] plainTextBytes = Encoding.GetEncoding("ISO-8859-1").GetBytes(toEncode);
              byte[] plainTextBytes = Encoding.UTF8.GetBytes(toEncode);
              Console.WriteLine("Cadena Antes del Base64: ");
              foreach (Byte b in plainTextBytes.ToArray&lt;Byte&gt;())
              {
  
                  Console.WriteLine(string.Format("[{0}] = {1}", i++, b.ToString()));
              }
              Console.WriteLine("Cadena Despues del Base64: ");
  
  
  
              plainTextBytes = Encoding.UTF8.GetBytes(System.Text.Encoding.UTF8.GetString(System.Convert.FromBase64String(toEncode)));
              i = 0;
              foreach (Byte b in plainTextBytes.ToArray&lt;Byte&gt;())
              {
  
                  Console.WriteLine(string.Format("[{0}] = {1}", i++, b.ToString()));
              }
  
  
              //ENCODE
              //System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(plainTextBytes));
              //DECODE
              //System.Text.Encoding.UTF8.GetString(System.Convert.FromBase64String(toEncode));
  
              return System.Convert.ToBase64String(plainTextBytes);
  
          }
  
          public static string Encriptar(string mensaje, string clave, string strIv)
          {
  
              byte[] key = Encoding.ASCII.GetBytes(EncodeBase64(clave).ToCharArray(), 0, 24);
              byte[] iv = Encoding.ASCII.GetBytes(EncodeBase64(strIv).ToCharArray(), 0, 8);        
  
  
              byte[] data = Encoding.ASCII.GetBytes(mensaje);
              byte[] enc = new byte[0];
              //byte[] dec = new byte[0];
              TripleDES tdes = TripleDES.Create();
              tdes.IV = iv;
              tdes.Key = key;
              tdes.Mode = CipherMode.CBC;
              tdes.Padding = PaddingMode.PKCS7;
              // encryption
              ICryptoTransform ict = tdes.CreateEncryptor();
              enc = ict.TransformFinalBlock(data, 0, data.Length);
              // decryption
              //ict = tdes.CreateDecryptor();
              //dec = ict.TransformFinalBlock(enc, 0, enc.Length);
              return Convert.ToBase64String(enc);
  
  
          }
  
  
      }
  </code></pre>
  
  <p>But I cant reproduce the output of Base64.decodeBase64(cadena.getBytes("ISO-8859-1")); in C# function.</p>
  
  <p>I dont know where is my mistake.
  Thanks for your help.</p>