[android]DES/3DES/AES加密方式
DES 支持8位加密解密,3Des支持24位,Aes支持32位。3Des是Des算法做三次。位数的单位是字节byte。不是bits。
3Des是把24位分成3组。第一组八位用来加密,第二组8位用于解密,第三组8位用于加密,所以。假设秘钥为123456781234567812345678(3组1-8),则相当于做了一次12345678的Des加密。比如:第一次用12345678秘钥对123进行加密得到 "LDiFUdf0iew=",然后用第二组的12345678对其进行解密(逆向加密过程)。得到了123,第三次重新加密得到 "LDiFUdf0iew="。
三种加密方式代码里不同的地方:
byte temp[] = new byte[位数];
SecretKey des_key = new SecretKeySpec(temp, "加密算法");
加密算法名相应的是:Aes Des Desede
改了这两个地方就能够实现不同加密方式。
加密方式底层不一样。DES是把原文编程2进制的一串01。然后和密文做运算,交换什么什么位置。
public class MainActivity extends Activity implements OnClickListener {
	private EditText des_key, des_src, des_dst;
	private Button btn_encode, btn_decode;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		des_key = (EditText) findViewById(R.id.des_key);
		des_src = (EditText) findViewById(R.id.des_src);
		des_dst = (EditText) findViewById(R.id.des_dst);
		btn_encode = (Button) findViewById(R.id.btn_encode);
		btn_decode = (Button) findViewById(R.id.btn_decode);
		btn_encode.setOnClickListener(this);
		btn_decode.setOnClickListener(this);
	}
	@Override
	public void onClick(View v) {
		String key_str = des_key.getText().toString();
		if (!TextUtils.isEmpty(key_str)) {
			try {
				// DES无论长了短了。都变成八位
				// AES 长度变为128 new SecretKeySpec(temp, "Aes");
				// 3Des 长度变为24 new SecretKeySpec(temp, "Desced");
				byte temp[] = new byte[8];
				byte b[] = key_str.getBytes("UTF-8");
				System.arraycopy(b, 0, temp, 0, Math.min(b.length, temp.length));
				// Des仅仅支持八位
				SecretKey des_key = new SecretKeySpec(temp, "Des");
				Cipher cipher = Cipher.getInstance("Des");
				switch (v.getId()) {
				case R.id.btn_encode:
					String src_str = des_src.getText().toString();
					if (!TextUtils.isEmpty(src_str)) {
						cipher.init(Cipher.ENCRYPT_MODE, des_key);
						byte[] bytes = cipher
								.doFinal(src_str.getBytes("UTF-8"));
						// 是用Base64编码的二进制字节数组
						des_dst.setText(Base64.encodeToString(bytes,
								Base64.DEFAULT));
					}
					break;
				case R.id.btn_decode:
					String dst_str = des_dst.getText().toString();
					if (!TextUtils.isEmpty(dst_str)) {
						cipher.init(Cipher.DECRYPT_MODE, des_key);
						// 是用Base64编码的二进制字节数组
						byte[] bytes = cipher.doFinal(Base64.decode(dst_str,
								Base64.DEFAULT));
						des_src.setText(new String(bytes, "UTF-8"));
					}
					break;
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
}
布局:
<span style="font-size:18px;"><LinearLayout 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:orientation="vertical" > <EditText
android:id="@+id/des_key"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="秘钥" /> <EditText
android:id="@+id/des_src"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="原文" /> <EditText
android:id="@+id/des_dst"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="密文" /> <Button
android:id="@+id/btn_encode"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="加密" /> <Button
android:id="@+id/btn_decode"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="解密" /> </LinearLayout></span>
[android]DES/3DES/AES加密方式的更多相关文章
- Java利用DES/3DES/AES这三种算法分别实现对称加密
		
转载地址:http://blog.csdn.net/smartbetter/article/details/54017759 有两句话是这么说的: 1)算法和数据结构就是编程的一个重要部分,你若失掉了 ...
 - Android数据加密之Aes加密
		
前言: 项目中除了登陆,支付等接口采用rsa非对称加密,之外的采用aes对称加密,今天我们来认识一下aes加密. 其他几种加密方式: Android数据加密之Rsa加密 Android数据加密之Aes ...
 - DES/3DES/AES 三种对称加密算法实现
		
1. 简单介绍 3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称.它相当于是对每个数据块应用三次DES ...
 - C#中使用DES和AES加密解密
		
C#中使用DES和AES加密解密 2008-01-12 09:37 using System;using System.Text;using System.Security.Cryptography; ...
 - DES、3DES、AES加密方式
		
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt165 DES 支持8位加密解密,3Des支持24位,Aes支持32位.3De ...
 - 对加密的了解(DES/3DES/AES区别 )
		
DES 1977年1月,美国政府颁布:采纳IBM公司设计的方案作为非机密数据的正式. 目前在国内,随着三金工程尤其是金卡工程的启动,DES算法在POS.ATM.磁卡及智能卡(IC卡).加油站.高速公路 ...
 - java-信息安全(二)-对称加密算法DES,3DES,AES,Blowfish,RC2,RC4
		
概述 信息安全基本概念: DES(Data Encryption Standard,数据加密标准) 3DES(Triple DES,三重数据加密算法(TDEA,Triple Data Encrypti ...
 - DES/3DES/AES区别
		
公元前400年,古希腊人发明了置换密码.1881年世界上的第一个电话保密专利出现.在第二次世界大战期间,德国军方启用“恩尼格玛”密码机,密码学在战争中起着非常重要的作用. DES 1977年1月,美国 ...
 - android  base64 和 aes 加密 解密
		
package pioneerbarcode.ccw.com.encryptanddecode;import android.os.Bundle;import android.support.v7.a ...
 
随机推荐
- 【Codeforces Round #482 (Div. 2) B】Treasure Hunt
			
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 我们考虑每个字符串中出现最多的字母出现的次数cnt[3] 对于这3个cnt的值. 如果cnt+n<=s[i].size 那么显 ...
 - 【转】Visual Studio單元測試小應用-測執行時間
			
[转]Visual Studio單元測試小應用-測執行時間 Visual Studio的單元測試會記錄每一個測試的執行時間,如果有幾個Method要測效能,以前我會用Stopwatch,最近我都改用單 ...
 - Revolution Platform
			
Revolution Platform 黑暗的极权统治现实 异类的处境 独孤的存在 觉者的形成 信仰的确立 信仰的产物 完整的思想理论 反抗与信仰的一致 反抗的超理性的智慧论 反抗的纯理性的方法论 反 ...
 - selenium的报错信息:selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: Compound class names not permitted
			
报错信息:selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: Compound class ...
 - 不仅仅是Google,您必须知道的全球十大地图API
			
不仅仅是Google,您必须知道的全球十大地图API 一.总结 一句话总结:除了google,也有其它很多很好的地图,必应地图(Bing Maps),OpenLayers 二.不仅仅是Google,您 ...
 - ThinkPHP5.0框架开发--第8章 TP5.0 模型
			
ThinkPHP5.0框架开发--第8章 TP5.0 模型 第8章 TP5.0 模型 ================================================= 今日学习 1. ...
 - Synergy 共享键盘和鼠标
			
直接安装Synergy 不行的话加配置文件 ➜ ~ cat synergy.conf section: screens lab712-PC: ckboss-HP: end section: links ...
 - javax.validation注解使用
			
@Pattern(regexp = "^[0-9]*$",message = "完成比例(进度)必须是数字")
 - Spark Streaming 总结
			
这篇文章记录我使用 Spark Streaming 进行 ETL 处理的总结,主要包含如何编程,以及遇到的问题. 环境 我在公司使用的环境如下: Spark: 2.2.0 Kakfa: 0.10.1 ...
 - Swift学习笔记(9):枚举
			
目录: 基本语法 关联值 原始值 枚举为一组相关的值定义了一个共同的类型. ・可以给枚举成员指定原始值类型:字符串,字符,整型值或浮点数等 ・枚举成员可以指定任意类型的关联值存储到枚举成员中 ・枚举可 ...