`

android 使用des算法

 
阅读更多

转自:http://www.linuxidc.com/Linux/2011-08/41866.htm 稍有改动

import java.security.Key;
import java.security.spec.AlgorithmParameterSpec;

import javax.crypto.Cipher;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.IvParameterSpec;

import android.util.Base64;

public class DesUtils {
 public static final String ALGORITHM_DES = "DES/CBC/PKCS5Padding";

 /**
  * DES算法,加密
  * @param data 待加密字符串
  * @param key 加密私钥,长度不能够小于8位
  * @return 加密后的字节数组,一般结合Base64编码使用
  * @throws CryptException 异常
  */
 public static String encode(String key, String data) throws Exception {
  return encode(key, data.getBytes());
 }

 /**
  * DES算法,加密
  * @param data  待加密字符串
  * @param key  加密私钥,长度不能够小于8位
  * @return 加密后的字节数组,一般结合Base64编码使用
  * @throws CryptException
  *             异常
  */
 private static String encode(String key, byte[] data) throws Exception {
  try {
   DESKeySpec dks = new DESKeySpec(key.getBytes());
   SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
   // key的长度不能够小于8位字节
   Key secretKey = keyFactory.generateSecret(dks);
   Cipher cipher = Cipher.getInstance(ALGORITHM_DES);
   IvParameterSpec iv = new IvParameterSpec("12345678".getBytes());
   AlgorithmParameterSpec paramSpec = iv;
   cipher.init(Cipher.ENCRYPT_MODE, secretKey, paramSpec);
   byte[] bytes = cipher.doFinal(data);
   return Base64.encodeToString(bytes, 0);
  } catch (Exception e) {
   throw new Exception(e);
  }
 }

 /**
  * DES算法,解密
  * @param data  待解密字符串
  * @param key 解密私钥,长度不能够小于8位
  * @return 解密后的字节数组
  * @throws Exception  异常
  */
 private static byte[] decode(String key, byte[] data) throws Exception {
  try {
   DESKeySpec dks = new DESKeySpec(key.getBytes());
   SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
   // key的长度不能够小于8位字节
   Key secretKey = keyFactory.generateSecret(dks);
   Cipher cipher = Cipher.getInstance(ALGORITHM_DES);
   IvParameterSpec iv = new IvParameterSpec("12345678".getBytes());
   AlgorithmParameterSpec paramSpec = iv;
   cipher.init(Cipher.DECRYPT_MODE, secretKey, paramSpec);
   return cipher.doFinal(data);
  } catch (Exception e) {
   throw new Exception(e);
  }
 }
 

 /**
  * 解密.
  * @param key
  * @param data
  * @return
  * @throws Exception
  */
 public static String decode(String key, String data) {
  byte[] datas;
  String value = null;
  try {
   if (System.getProperty("os.name") != null
     && (System.getProperty("os.name").equalsIgnoreCase("sunos") || System
       .getProperty("os.name").equalsIgnoreCase("linux"))) {
    datas = decode(key, Base64.decode(data, 0));
   } else {
    datas = decode(key, Base64.decode(data, 0));
   }

   value = new String(datas);
  } catch (Exception e) {
   value = "";
  }
  return value;
 }

}

分享到:
评论

相关推荐

    java用于实现DES算法!

    java代码用于实现DES算法,代码注释相当清楚,一看就明白!

    android AES DES MD5加密

    为了提高安全性,通常会使用DES的双密钥版本,即3DES(Triple DES),它通过三次应用DES算法来增强安全性。 MD5是一种非对称哈希函数,它将任意长度的数据转换为固定长度的摘要。MD5的主要用途是校验数据完整性和...

    android的des加密

    2. **创建Cipher对象**:使用`Cipher`类的`getInstance()`方法,传入"DES/ECB/PKCS5Padding"字符串,表明我们使用DES算法,ECB模式(Electronic Codebook),以及PKCS5Padding填充方式。 3. **初始化Cipher**:根据...

    3DES加密算法C语言实现

    为了将C语言实现的3DES算法应用于Android平台,需要编写JNI接口文件,定义Java调用C函数的接口,并在Android.mk或CMakeLists.txt中配置编译选项,以便生成动态链接库供Java代码使用。 在实际开发中,需要注意以下几...

    Android下3DES加密算法的JNI实现(完善版)

    之前上传过:编译Android下3DES加密算法的.SO文件及源码,地址:...压缩文件内包含编译后的lib3DES.so文件,3DES加密算法的JNI C语言源码,Android的makefile文件等。希望能够帮助到有需要的朋友!

    DES算法的二维码扫描

    - 二维码扫描与解密: 使用Android手机摄像头扫描二维码,并通过DES算法解密获取原始数据。 - 系统设计与实现: 设计整个系统的架构,并实现各功能模块。 #### 2 开发相关技术介绍 - **2.1 ANDROID平台介绍** - *...

    DES-android.zip_android DES加密_des_des android_encryption androi

    在Android中,可以使用`KeyGenerator`实例化并初始化,指定DES算法。通常,密钥需要随机生成,以确保安全性。 ```java KeyGenerator keyGen = KeyGenerator.getInstance("DES"); keyGen.init(56); // 56位是DES的...

    3DES加密算法(源码)

    在提供的压缩包中,3DES文档应该包含了关于3DES算法的详细描述,可能包括其工作流程、密钥管理以及如何在实际应用中使用3DES。文件名称为"3DES"可能是一个源代码文件,包含了3DES加密和解密的实现,或者是关于3DES...

    Android DES,AES,RSA实现

    本文将深入探讨在Android环境下如何实现DES(Data Encryption Standard)、AES(Advanced Encryption Standard)和RSA(Rivest-Shamir-Adleman)这三种主流的加密算法。 首先,DES是一种古老的对称加密算法,它使用...

    android iOS php des 互通加密解密算法

    `DES`(Data Encryption Standard)是一种广泛使用的对称加密算法,它允许这三种平台之间进行加密解密操作,确保数据的机密性。本篇将详细讲解如何在`Android`、`iOS`和`PHP`中实现`DES`加密解密,并探讨其在中文和...

    Android利用C++实现RSA-DES-AES-BASE64-MD5

    2. DES算法:DES(Data Encryption Standard)是一种古老的对称加密算法,使用56位密钥对64位数据块进行操作。C++实现DES包括: - 密钥扩展:将56位密钥扩展为64位,其中每8位一组,第8组为奇偶校验位。 - Feistel...

    Android数据加密之Des加密

    前言:  ... DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。DES加密算法出自IBM的研究, 后来被美国政府正式采用,之后开始广泛流传,但是近些年使用越来越少,因为D

    编译Android下3DES加密算法的.SO文件及源码

    通过以上步骤,你就成功地将3DES加密算法编译为Android可使用的JNI库,并实现了在Java层调用。这种方法适用于其他需要在Android上使用C/C++原生代码的情况,如加密、图像处理、游戏引擎等。同时,你也可以根据实际...

    DES加密算法(C语言实现)

    利用C语言编写的DES加密算法,能够对任意长度的字符数组进行加解密。通过编写相应的JNI接口文件能够很容易移植到Android平台,从而解决不同平台DES加解密结果不一致的问题。

    android DES 加密

    在Android中实现DES加密,你需要使用Java的`javax.crypto`包。以下是一些关键步骤: 1. **生成密钥**:首先,你需要创建一个DES密钥。这通常通过`KeyGenerator`类完成,指定算法为"DES"。例如: ```java ...

    Android与其他系统间DES加密解密的处理经验

    C#系统采用DES加密字符串,Android用DES解密就是不成功,从网上搜了许多源码都不能用,深入研究加密流程及算法是没有时间的。 网上搜的源码大都使用系统默认的加密模式,当我们对这些参数不了解时,就会浪费许多时间...

    DeS.rar_DES android_android_android encryption_des

    这个代码库对于理解如何在Android应用中集成DES加密功能非常有帮助,但要注意DES的安全性限制,对于敏感数据,建议使用更强大的加密算法,如AES。同时,密钥管理也非常重要,确保密钥的安全存储和传输,否则即使使用...

    des.rar_android_android linux

    对于开发者来说,理解和使用这个"des.c"文件,首先需要掌握DES算法的基本原理,然后需要熟悉Android和Linux的C编程环境,包括如何编译、链接和调用C代码,以及如何在Android的JNI层集成原生代码。此外,安全性和效率...

Global site tag (gtag.js) - Google Analytics