title: Implementing Base 64 and SHA
body: <p>I have tried following code so far:</p>
  
  <pre><code>+(NSString*)encodeString:(NSString*)origString{
      /* Here we can choose the algorithm */
      NSData *keyData = [@"secret_key" dataUsingEncoding:NSUTF8StringEncoding];
  
      NSData *textData = [origString dataUsingEncoding:NSUTF8StringEncoding];
      uint8_t digest[CC_SHA1_DIGEST_LENGTH] = {0};
  
      CCHmacContext hmacContext;
      CCHmacInit(&amp;hmacContext, kCCHmacAlgSHA1, keyData.bytes, keyData.length);
      CCHmacUpdate(&amp;hmacContext, textData.bytes, textData.length);
      CCHmacFinal(&amp;hmacContext, digest);
  
      /* out is HMAC */
      NSData *out = [NSData dataWithBytes:digest length:CC_SHA1_DIGEST_LENGTH];
  
      /* resultString is Base64 encoded HMAC */
      NSString *resultString = [out base64EncodedString];
      return resultString;
  }
  </code></pre>
  
  <p>This is giving correct result as wanted. But my android and Back-end partner want me to clone following code into objective-c:</p>
  
  <pre><code>private String encryptString(String origString) {
      String encryptedString = "";
      Cipher cipher = null;
      byte[] encoded = null;
      byte[] rawEnc =null;
      try {
          //Code which is working
          cipher = Cipher.getInstance("AES/CBC/PKCS5Padding", "SunJCE");
          SecretKeySpec key = new SecretKeySpec(SECRET_KEY.getBytes("UTF-8"), "AES");
          cipher.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(INITIALIZATIO_VECTOR.getBytes("UTF-8")));
          rawEnc = cipher.doFinal(origString.getBytes("UTF-8"));
          encoded = Base64.encodeBase64(rawEnc);
          encryptedString = new String(encoded, "UTF-8");
  
      } catch (NoSuchAlgorithmException e) {
          System.out.println("No Such Algorithm Exception:" + e.getMessage());
      } catch (NoSuchProviderException e) {
          System.out.println("No Such Provider Exception:" + e.getMessage());
      } catch (NoSuchPaddingException e) {
          System.out.println("No Such Padding Exception:" + e.getMessage());
      } catch (InvalidKeyException | InvalidAlgorithmParameterException
               | UnsupportedEncodingException e) {
          System.out.println("Exception:" + e.getMessage());
      } catch (Exception e) {
          System.out.println("Exception:" + e.getMessage());
      }
      return encryptedString;
  }
  private static final String SECRET_KEY = "secret_key";
  private static final String INITIALIZATIO_VECTOR = "123456";
  
  }
  </code></pre>
  
  <p>And android's output is different than iOS and is as required by back-end developer. So, I have to convert code according to theirs.</p>
  
  <p>The only things differs is <code>INITIALIZATIO_VECTOR</code>.</p>
  
  <p>I want above code in objective-C.</p>