博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android中的MD5、Base64、DES/3DES/ADES加解密
阅读量:5115 次
发布时间:2019-06-13

本文共 3730 字,大约阅读时间需要 12 分钟。

MD5摘要算法:

主要代码: String s = edit.getText().toString();    if (TextUtils.isEmpty(s)){        Toast.makeText(getActivity(), "摘要数据不可为空", Toast.LENGTH_SHORT).show();    } else {        try {            //获取一种摘要算法            MessageDigest instance = MessageDigest.getInstance("MD5");            byte[] digest = instance.digest(s.getBytes("UTF-8"));            StringBuilder builder = new StringBuilder();            for (byte b : digest) {                builder.append(String.format("%2x", b & 0xff));            }            String replace = builder.toString().replace(' ', '0').toUpperCase();            text.setText(replace);        } catch (NoSuchAlgorithmException e) {            e.printStackTrace();        } catch (UnsupportedEncodingException e) {            e.printStackTrace();        }    }}

Base64加解密:

主要代码:public void onClick(View v) {    switch (v.getId()){        case R.id.base64_encode:            String src_s = src.getText().toString();            if (TextUtils.isEmpty(src_s)){                Toast.makeText(getActivity(), "原码不可为空", Toast.LENGTH_SHORT).show();            } else {                try {                    String s = Base64.encodeToString(src_s.getBytes("UTF-8"), Base64.DEFAULT);                    rlt.setText(s);                } catch (UnsupportedEncodingException e) {                    e.printStackTrace();                }            }            break;        case R.id.base64_decode:            String rlt_s = rlt.getText().toString();            if (TextUtils.isEmpty(rlt_s)){                Toast.makeText(getActivity(), "编码不可为空", Toast.LENGTH_SHORT).show();            } else {                byte[] decode = Base64.decode(rlt_s, Base64.DEFAULT);                try {                    src.setText(new String(decode, "UTF-8"));                } catch (UnsupportedEncodingException e) {                    e.printStackTrace();                }            }            break;    }}

DES加解密:

主要代码:public void onClick(View view) {    String key_str = key.getText().toString();    Log.i("key_str-----",key_str+"----");    if (key_str==null){        Toast.makeText(getActivity(), "密钥不可为空", Toast.LENGTH_SHORT).show();    } else {        try {            byte[] bytes = key_str.getBytes("UTF-8");            byte[] keys = new byte[32];            System.arraycopy(bytes, 0, keys, 0, Math.min(bytes.length, keys.length));            //加解密时, 用到的key对象, 第一个參数的byte数组的长度必须符合第二个參数算法的要求。

SecretKey secretKey = new SecretKeySpec(keys, "Aes"); //加解密时,用到的工具对象,工具的算法和key的算法必须一样 Cipher cipher = Cipher.getInstance("Aes"); switch (view.getId()){ case R.id.des_encode: String src_str = src.getText().toString(); if (src_str==null){ Toast.makeText(getActivity(), "加密时,原文不可为空", Toast.LENGTH_SHORT).show(); } else { //初始化为加密模式 cipher.init(Cipher.ENCRYPT_MODE, secretKey); byte[] aFinal = cipher.doFinal(src_str.getBytes("UTF-8")); rlt.setText(Base64.encodeToString(aFinal, Base64.DEFAULT)); } break; case R.id.des_decode: String rlt_str = rlt.getText().toString(); if (rlt_str==null){ Toast.makeText(getActivity(), "解密时。密文不可为空", Toast.LENGTH_SHORT).show(); } else { cipher.init(Cipher.DECRYPT_MODE, secretKey); byte[] aFinal = cipher.doFinal(Base64.decode(rlt_str, Base64.DEFAULT)); src.setText(new String(aFinal, "UTF-8")); } break; } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (NoSuchPaddingException e) { e.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); } catch (BadPaddingException e) { e.printStackTrace(); } catch (IllegalBlockSizeException e) { e.printStackTrace(); } } } </span>

源代码地址:

http://download.csdn.net/detail/lzq520210/9419823

转载于:https://www.cnblogs.com/llguanli/p/8612005.html

你可能感兴趣的文章
Python内置函数(29)——help
查看>>
【题解】[P4178 Tree]
查看>>
【深度学习】caffe 中的一些参数介绍
查看>>
QML学习笔记之一
查看>>
WPF中实现多选ComboBox控件
查看>>
IO—》Properties类&序列化流与反序列化流
查看>>
Codeforces 719B Anatoly and Cockroaches
查看>>
关于TFS2010使用常见问题
查看>>
聚合与组合
查看>>
ionic2+ 基础
查看>>
Screening technology proved cost effective deal
查看>>
Thrift Expected protocol id ffffff82 but got 0
查看>>
【2.2】创建博客文章模型
查看>>
Jsp抓取页面内容
查看>>
大三上学期软件工程作业之点餐系统(网页版)的一些心得
查看>>
可选参数的函数还可以这样设计!
查看>>
Java语言概述
查看>>
关于BOM知识的整理
查看>>
使用word发布博客
查看>>
面向对象的小demo
查看>>