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. CAReplicatorLayer 详解

    CAReplicatorLayer可以将自己的子图层复制指定的次数,并且复制体会保持被复制图层的各种基础属性以及动画 基本属性 instanceCountvar instanceCount: Int拷 ...

  2. 扩展kmp--模板解析

    扩展kmp: 用于求串的各个后缀与原串的最长公共前缀的长度: 上图的是字符串自匹配的过程: 图一: 假设现在匹配到i-1了,开始求next [ i ] 的值,此时,k记录的是到目前为止匹配到的最远的位 ...

  3. 免安装版MySql安装与配置

    1:在MySql官网下载免安装版 http://downloads.mysql.com/archives/community/ 下载链接 http://downloads.mysql.com/arch ...

  4. 如何在github上寻找漏洞

    https://github.com/search?p=2&q=eval%28%24_POST[&ref=searchresults&type=Code   1.$_GET s ...

  5. 12深入理解C指针之---指针多层间接引用

    该系列文章源于<深入理解C指针>的阅读与理解,由于本人的见识和知识的欠缺可能有误,还望大家批评指教. 一.指针多层引用 1.定义:指针可以用不同的间接引用层级,通常使用多重指针或字符数组来 ...

  6. Django迁移数据库

    我们已经编写了博客数据库模型的代码,但那还只是 Python 代码而已,Django 还没有把它翻译成数据库语言,因此实际上这些数据库表还没有真正的在数据库中创建 为了让 Django 完成翻译,创建 ...

  7. VUE之Router命令行警告:Named Route 'Home' has a default child route. 解决办法

    Named Route 'Home' has a default child route. When navigating to this named route (:to="{name: ...

  8. 牛客网 牛客小白月赛1 A.简单题-控制输出格式setiosflags()函数+setprecision()函数

    水一水博客,都不好意思写这篇博客,毕竟已经不是大一的了. 难得能把一整套题都写出来(日常智障).但是在这里不写G题あなたの蛙は旅⽴っています的题解. 有毒,G题关了流同步只能过94%的样例,说我运行超 ...

  9. 饼系列—圈饼 doughnut

    chartControl属性 ApplicationSettings: Name:控件名字 AccessibleDescription: ??? AccessibleName:??? Accessib ...

  10. SourceTree免注册并连码云

    1 在C:\Users\用户\AppData\Local\Atlassian\SourceTree目录下新建 accounts.json 其中AppData是隐藏文件夹 2 输入 [ { " ...