`
sbabzc
  • 浏览: 38407 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

关于android的des算法代码

阅读更多
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.IvParameterSpec;
import android.util.Base64;
import java.security.Key;
import java.security.spec.AlgorithmParameterSpec;
import javax.crypto.Cipher;


public class DesUtils {

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


/**
  * 解密.
  * @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;
}

/**
  * 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);
  }
}

/**
  * 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);
  }
}


}
本文地址:http://www.xszlo.com/article/2012-11-19/7501.html,转发请保留这个地址,谢谢
分享到:
评论

相关推荐

    java用于实现DES算法!

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

    Android DES,AES,RSA实现

    为了在Android项目中实现这些加密算法,你需要创建对应的类或者工具方法,封装加密和解密过程,确保在正确管理密钥的同时,提高代码的可读性和可维护性。同时,考虑到Android设备的多样性,需要注意API版本的兼容性...

    3DES加密算法C语言实现

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

    DES-android.zip_android DES加密_des_des android_encryption androi

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

    android DES 加密

    这个示例可能包括创建密钥、加密和解密字符串的函数,以及如何在Android环境中运行这些函数的代码。通过阅读和理解这个示例,开发者可以快速掌握Android平台上的DES加密解密操作。 然而,值得注意的是,DES由于其...

    3DES加密算法(源码)

    文件名称为"3DES"可能是一个源代码文件,包含了3DES加密和解密的实现,或者是关于3DES算法的详细说明文档。 学习3DES算法,你需要理解以下关键概念: 1. 密钥长度:DES的密钥长度是56位,3DES可以看作是168位(因为...

    DES算法的二维码扫描

    - **技术可行性**: Android平台提供了丰富的API接口,支持图像处理和数据加密等功能,这为基于DES算法的二维码扫描系统的实现提供了技术支持。 - **经济可行性**: 开发成本相对较低,主要集中在软件开发上,硬件设备...

    android的des加密

    总结一下,Android的DES加密与.NET平台的实现具有兼容性,都是基于标准的DES算法。在Android应用开发中,可以利用`javax.crypto`包实现DES加密和解密,遵循生成密钥、创建和初始化Cipher、执行加密/解密以及处理结果...

    android端写的DES加密解密代码对应C#写的加密解密代码。两者加密解密结果完全一致

    C#代码可能使用`DESCryptoServiceProvider`类来实例化DES算法,然后使用`CreateEncryptor`和`CreateDecryptor`方法进行加密和解密。密钥和IV的处理方式与Android类似,都需要适当地管理和传递。 为了确保Android和...

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

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

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

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

    des.rar_android_android linux

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

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

    本文将详细介绍如何将C语言实现的3DES加密算法编译为Android平台下的动态链接库(.SO文件),并利用JNI(Java Native Interface)在Java层调用。 首先,我们需要了解3DES的工作原理。3DES是通过三次应用DES加密过程...

    DeS.rar_DES android_android_android encryption_des

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

    android studio JNI RSA DES AES base64 MD5 加解密.rar

    在Android开发中,有时我们需要...总的来说,这个压缩包提供的代码示例对于学习和实践Android应用中的加密技术非常有价值,尤其是通过JNI在原生层实现这些复杂的加密算法。这不仅可以提升应用的安全性,还能优化性能。

    DES加密解密源代码

    1. **DES算法原理**:DES使用了Feistel结构,分为初始置换、16轮迭代和逆初始置换三个阶段。每一轮迭代包含分组、扩展、异或、替换四个步骤,其中扩展将32位输入扩展为48位,替换是通过S盒进行非线性变换,异则是与...

    des加密demo

    DES算法由IBM公司在1970年代初期开发,并在1977年被美国国家标准局(NIST)采纳为标准。它基于块加密,每次处理64位的数据块,但其中的8位用于奇偶校验,因此实际有效数据只有56位。这56位数据被分为左右两半,每半...

    android上利用des加密程序

    DES(Data Encryption Standard)是一种广泛应用的块加密算法,它为Android应用提供了基础的数据保护手段。本文将详细讲解如何在Android上实现DES加密,以及其背后的原理和注意事项。 首先,DES是一种对称加密算法...

    3Des加密,在ios,android ,java服务端都实现了

    它通过三次迭代DES算法来提高安全性,使得密钥长度从原来的56位增加到168位(尽管实际有效密钥长度为112位,因为中间有密钥派生过程)。3Des在信息安全领域广泛应用,特别是在需要跨平台加密的场景中,如iOS、...

Global site tag (gtag.js) - Google Analytics