MD5摘要算法:

<span style="font-size:18px;">主要代码:
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();
}
}
}</span>

Base64加解密:

<span style="font-size:18px;">主要代码:
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;
}
}</span>

DES加解密:

<span style="font-size:18px;">主要代码:
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

android中的MD5、Base64、DES/3DES/ADES加解密的更多相关文章

  1. .net core中使用openssl的公钥私钥进行加解密

    这篇博文分享的是 C#中使用OpenSSL的公钥加密/私钥解密 一文中的解决方法在 .net core 中的改进.之前的博文针对的是 .NET Framework ,加解密用的是 RSACryptoS ...

  2. iOS中的MD5(base64)加密

    MD5(base64)是一种结合MD5摘要和base64编码的密文处理方式,加密后的结果为24位字符串,且后两位为==,例如:1的加密结果为xMpCOKC5I4INzFCab3WEmw==. 下面是加 ...

  3. DES,AeS加解密,MD5,SHA加密

    1.DES一共就有4个参数参与运作:明文.密文.密钥.向量.其中这4者的关系可以理解为: 密文=明文+密钥+向量: 明文=密文-密钥-向量: 为什么要向量这个参数呢?因为如果有一篇文章,有几个词重复, ...

  4. Android 中的 WebView实现 Html5 标签网页加载

    自Android 4.4起,Android中的WebView开始基于Chromium(谷歌浏览器)支持浏览器的一系列功能,webkit解析网页各个节点,这个改变,使得WebView的性能大幅度提升,并 ...

  5. Android中textView自动识别电话号码,电子邮件,网址(自动加连接)

    extends:http://blog.csdn.net/wx_962464/article/details/8471195 其实这个是很简单的,在android中已经为我们实现了,但是我估计很多人都 ...

  6. Android中监听webview监听是否加载完成

    之前写过一篇捕获Phoengap的webview事件的方法,主要是在实现了CordovaInterface的Activity中,  在onMessage中根据第一个参数的message name来判断 ...

  7. 使用JDK中的安全包对数据进行加解密

    本文以使用DES对称加密算法为例使用jdk对数据进行加密解密. 首先需要了解Provider类,它是jdk引入的密码服务提供者概念,实现了Java安全性的一部分或者全部.Provider 可能实现的服 ...

  8. iOS开发:用DES对字符串加解密

    参考http://www.cnblogs.com/janken/archive/2012/04/05/2432930.html,做了个小修改,实现PHP,JAVA,Objective-c加解密结果相同 ...

  9. python 实现 DES CBC模式加解密

    # -*- coding=utf-8-*- from Crypto.Cipher import DES import base64 """ des cbc加密算法 pad ...

随机推荐

  1. ThinkPHP5杂技(二)

    不要使用数据库查询嵌套 if (!$listA = Db::name('coin') ->field('id,symbol') ->where('id', 'IN', logic('All ...

  2. iOS学习笔记34-加速计和陀螺仪

    一.CoreMotion框架介绍 我们知道有一些iOS的应用,会有一些特殊的要求,比如: 电子罗盘指南针之类的应用:让我们知道方向. 运动类型软件:让我们知道我们跑步多少公里. 社交软件中的摇一摇功能 ...

  3. 【bzoj2430】[Poi2003]Chocolate 贪心

    题目描述 有一块n*m的矩形巧克力,准备将它切成n*m块.巧克力上共有n-1条横线和m-1条竖线,你每次可以沿着其中的一条横线或竖线将巧克力切开,无论切割的长短,沿着每条横线切一次的代价依次为y1,y ...

  4. 【Luogu】P2057善意的投票(最小割转最大流)

    题目链接 也算水题一道吧,不过Round1感性理解一下就xjb建了个图,40 Round2仔细分析了一会,理性建了个图,90 然后分析了半天……改大数组就A了…… 从S到所有值为1的点连一条inf的边 ...

  5. iOS-跨界面传值和跨应用传值

    跨界面传值 从一个界面将一个结果值传到另一个界面,这个是我们在开发过程中非常常见的一个问题.传值本身并不是一个太复杂的问题,在此主要简述一下常用的传值方法. 我们传值常用的方法主要有四种: 1.属性传 ...

  6. Team Contests - Warmup(2016年多校热身赛,2016年黑龙江省赛)

    Team Contests - Warmup A 题意:... 思路:不会 代码:... 随机 B 题意:给n个点,问是否有一个圆上有最少n/3个点 思路:随机大法好. 代码:... 递推 C 题意: ...

  7. netsh配置Windows防火墙(advfirewall)

    有人可能会说,Windows防火墙有非常友好的用户界面,为什么要使用命令行界面来配置一个Windows防火墙?有 个人认为有一下原因(撇开有的人喜欢命令行不喜欢界面的 , o(∩_∩)o 哈哈) Fi ...

  8. Vbat 1.8V,接充電器,GPIO_CHG_EN pin 竟然是 high!

    Schematic : Precondition : Vbat 1.8V Plugin adapter Preloader doesn't enable GPIO_CHG_EN Origin : 做個 ...

  9. ARCGIS SDK For DotNet 路径

    ARCGIS SDK For DotNet 路径 驱动器 C 中的卷是 WIN7 卷的序列号是 06AC-BD3E C:\Program Files (x86)\ArcGIS\DeveloperKit ...

  10. ANT---调用外部命令的一些坑

    最近用到了Ant,发现还是有许多功能是Ant没有提供相应Task支持,而操作系统提供了相应的系统命令.Ant说明书上说了,用<exec>可以调用系统命令,实际操作起来才发现陷阱可不少,一不 ...