package com.ruihao.enanddecrypt;
import android.app.Activity;
import android.content.Context;
import android.widget.Toast;
import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
//import com.sandcollections.GetMsgKey;
// import com.ruihao.daipay.util.DesUtils;
import com.facebook.react.bridge.Callback;

import java.io.Console;
import java.security.Key;
import java.security.Security;
// import Java.security.SecureRandom;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.SecretKeyFactory;
import javax.crypto.SecretKey;
import javax.crypto.Cipher;
import java.util.*;
import android.content.Intent;
import android.util.Log;
/**
 * Created by Administrator on 2016/9/22.
 */
 
public class EnAndDeBaseModule extends ReactContextBaseJavaModule {
  private  Intent intent;
  public static final String REACTCLASSNAME = "EnAndDeBaseModule";
  private Context mContext;
  private String password;//key 8的倍数
  public EnAndDeBaseModule(ReactApplicationContext reactContext) {
    super(reactContext);
    mContext = reactContext;
    //Log.i("zh", "--------"+GetMsgKey.strGetDesKey()+"----");
    //this.password=new GetMsgKey().stringFromJNI();
    //this.password="skb412#A";//加密解密用的key必须和服务器端保持一致，后期会用ndk替代
    this.password="djp";//native中获取key值防止反编译
  }
 
@Override
public String getName() {
    return REACTCLASSNAME;
}


 

  /**
   * 加密Promise
   * @param 加密字符串，先是des加密，再base64编码
   * @param 需要加密的源字符串
   * @param Promise
   */
  @ReactMethod
  public void encryptP(String strJM,Promise promise)
  {
    try{
       DesUtils desObj=new DesUtils(this.password);
       strJM= desObj.encrypt(strJM);//des加密
       promise.resolve(strJM);
    }catch(Exception ex)
    {
       promise.reject(ex.getMessage());
    }
  }


 /**
   * 解密Promise
   * @param 解密字符串，先是base64解码，再des解密
   * @param 需要解密的源字符串
   * @param Promise
   */
  @ReactMethod
 public void decryptP(String strJM,Promise promise) {
    try{
       DesUtils desObj=new DesUtils(this.password);
       strJM=desObj.decrypt(strJM);//des解密
       promise.resolve(strJM);
    }catch(Exception ex)
    {
       promise.reject(ex.getMessage());
    }
  }


}
