三重Des对称加密在Android、Ios 和Java 平台的实现

引言

如今手机app五彩缤纷,确保手机用户的数据安全是开发人员必须掌握的技巧,下面通过实例介绍DES在android、ios、java平台的使用方法;
DES加密是目前最常用的对称加密方式,性能优于非对称加密(RSA),是手机app请求数据加密的优先选择。

DES简介:

DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法, 算法的入口参数有三个:Key、Data、Mode。
Key:为7个字节共56位,是DES算法的工作密钥;
Data:为8个字节64位,是要被加密或被解密的数据;
Mode:为DES的工作方式,有两种:加密或解密。

3DES简介:

3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解;3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。因此比起最初的DES,3DES更为安全。

加密实例:
java版
`package com.v1.linxun.portal.utils;

import java.security.Key;

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

/**

  • 3DES加密工具类
    */
    public class Des3Util {
    // 密钥 长度不得小于24
    private final static String secretKey = "123456789012345678901234" ;
    // 向量 可有可无 终端后台也要约定
    private final static String iv = "01234567";
    // 加解密统一使用的编码方式
    private final static String encoding = "utf-8";

    /**
    * 3DES加密
    *
    * @param plainText
    *            普通文本
    * @return
    * @throws Exception
    */
    public static String encode(String plainText) throws Exception {
         Key deskey = null;
         DESedeKeySpec spec = new DESedeKeySpec(secretKey .getBytes());
         SecretKeyFactory keyfactory = SecretKeyFactory.getInstance( "desede");
          deskey = keyfactory.generateSecret( spec);
    
         Cipher cipher = Cipher.getInstance( "desede/CBC/PKCS5Padding");
         IvParameterSpec ips = new IvParameterSpec( iv.getBytes());
          cipher.init(Cipher. ENCRYPT_MODE, deskey, ips);
          byte[] encryptData = cipher.doFinal( plainText.getBytes( encoding));
          return Base64. encode( encryptData);
    

    }

    /**
    * 3DES解密
    *
    * @param encryptText
    *            加密文本
    * @return
    * @throws Exception
    */
    public static String decode(String encryptText) throws Exception {
         Key deskey = null;
         DESedeKeySpec spec = new DESedeKeySpec( secretKey.getBytes());
         SecretKeyFactory keyfactory = SecretKeyFactory.getInstance( "desede");
          deskey = keyfactory. generateSecret( spec);
         Cipher cipher = Cipher.getInstance( "desede/CBC/PKCS5Padding" );
         IvParameterSpec ips = new IvParameterSpec( iv.getBytes());
          cipher. init(Cipher. DECRYPT_MODE, deskey, ips);
    
          byte[] decryptData = cipher. doFinal(Base64. decode(encryptText ));
    
          return new String( decryptData, encoding);
    

    }

    public static void main(String args[]) throws Exception{
         String str = "你好" ;
         System. out.println( "----加密前-----:" + str );
         String encodeStr = Des3Util. encode( str);
         System. out.println( "----加密后-----:" + encodeStr );
         System. out.println( "----解密后-----:" + Des3Util.decode( encodeStr));
    

    }
    }
    `

你可能感兴趣的:(三重Des对称加密在Android、Ios 和Java 平台的实现)