android 使用DigestUtilsmd5加密的方法
android 使用DigestUtilsmd5加密的方法
方开金 发表于3年前
android 使用DigestUtilsmd5加密的方法
  • 发表于 3年前
  • 阅读 2694
  • 收藏 8
  • 点赞 0
  • 评论 3

腾讯云实验室 1小时搭建人工智能应用,让技术更容易入门 免费体验 >>>   

摘要: 在android中使用apache commons-codec的MD5加密方法

直接上代码吧。注意导入apache commons-codec的jar包。

1、布局文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.hellom.MainActivity$PlaceholderFragment" >

    <TextView
        android:id="@+id/notic"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <TextView
        android:id="@+id/notic01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/notic"
        android:layout_below="@+id/notic"
        android:layout_marginTop="24dp"
        android:text="@string/notic01" />

    <EditText
        android:id="@+id/textIn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/notic01"
        android:layout_alignBottom="@+id/notic01"
        android:layout_marginLeft="19dp"
        android:layout_toRightOf="@+id/notic01"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <TextView
        android:id="@+id/ciphertext"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/notic01"
        android:layout_below="@+id/textIn"
        android:layout_marginTop="33dp"
        android:text="@string/notic02" />

    <TextView
        android:id="@+id/ciphertext01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/ciphertext"
        android:layout_alignBottom="@+id/ciphertext"
        android:layout_alignLeft="@+id/textIn"
        android:layout_alignRight="@+id/textIn"
        android:text="" />

    <TextView
        android:id="@+id/textOut"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/ciphertext"
        android:layout_marginTop="23dp"
        android:text="@string/notic04" />

    <TextView
        android:id="@+id/text03"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/textOut"
        android:layout_alignLeft="@+id/ciphertext01"
        android:layout_alignRight="@+id/ciphertext01"
        android:text="" />

    <Button
        android:id="@+id/translation01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textOut"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="97dp"
        android:layout_marginLeft="16dp"
        android:text="@string/notic03" />

    <Button
        android:id="@+id/translation02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/translation01"
        android:layout_alignRight="@+id/text03"
        android:layout_marginRight="37dp"
        android:text="@string/notic05" />

</RelativeLayout>

2、mainActivity

@Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (savedInstanceState == null)
        {
            getFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment()).commit();
        }
    }

3、fragment

public class PlaceholderFragment extends Fragment
{
    //明文
    public static EditText text01;
    //密文
    public static TextView text02;
    //测试明文
    public static TextView text03;
    //加密事件按钮
    public static Button translationBtn01;
    //解密事件按钮
    public static Button translationBtn02;
    

    public PlaceholderFragment()
    {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState)
    {
        View rootView = inflater.inflate(R.layout.fragment_main, container,
                false);
        text01 = (EditText) rootView.findViewById(R.id.textIn);
        text02 = (TextView) rootView.findViewById(R.id.ciphertext01);
        text03 = (TextView) rootView.findViewById(R.id.text03);
        translationBtn01 = (Button) rootView.findViewById(R.id.translation01);
        translationBtn02 = (Button) rootView.findViewById(R.id.translation02);
        translationBtn02.setEnabled(false);
        return rootView;
    }

    @Override
    public void onAttach(Activity activity)
    {
        // TODO Auto-generated method stub
        super.onAttach(activity);
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState)
    {
        // TODO Auto-generated method stub
        super.onActivityCreated(savedInstanceState);
        
        translationBtn01.setOnClickListener(new BtnOnClickListener(getActivity()));
        translationBtn02.setOnClickListener(new BtnOnClickListener(getActivity()));
    }
    
    
}

3、fragment中的按钮事件类(独立类的缺点是需要较多的static变量)

public class BtnOnClickListener implements OnClickListener
{

    private Context context;

    public BtnOnClickListener(Context context)
    {
        // TODO Auto-generated constructor stub
        this.context = context;
    }

    @Override
    public void onClick(View v)
    {
        // TODO Auto-generated method stub

        int id = v.getId();
        switch (id)
        {
        // 加密按钮事件按钮
        case R.id.translation01:
        {

            if (TextUtils.isEmpty(PlaceholderFragment.text01.getText()))
            {
                Toast.makeText(context, "请输入需要加密的内容", Toast.LENGTH_SHORT)
                        .show();
            } else
            {

                String text = PlaceholderFragment.text01.getText().toString()
                        .trim();
                Toast.makeText(context, "开始加密", Toast.LENGTH_SHORT).show();

                String text01 = new String(Hex.encodeHex(DigestUtils.md5(text)));

                PlaceholderFragment.text02.setText(text01);
                PlaceholderFragment.translationBtn02.setEnabled(true);
                PlaceholderFragment.translationBtn01.setEnabled(false);

            }
        }
            break;

        case R.id.translation02:
        {
            Toast.makeText(context, "开始解密", Toast.LENGTH_SHORT).show();
            
            PlaceholderFragment.text03.setText("MD5为不可逆加密,可尝试Base64.");
            PlaceholderFragment.translationBtn02.setEnabled(false);
            PlaceholderFragment.translationBtn01.setEnabled(true);
        }
            break;

        default:
            break;
        }
    }

}


共有 人打赏支持
粉丝 6
博文 62
码字总数 12239
评论 (3)
拉偶有所依
此种加密方式确实可以,但是还有其他更安全有效的方式,建议楼主看下http://t.cn/Rz0bhUA
拉偶有所依
此种加密方式确实可以,但是还有其他更安全有效的方式,建议楼主看下http://t.cn/Rz0bhUA
拉偶有所依
此种加密方式确实可以,但是还有其他更安全有效的方式,建议楼主看下http://t.cn/Rz0bhUA
×
方开金
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: