Android、iPhone和Java三个平台一致的加密工具

先前一直在做安卓,最近要开发iPhone客户端,这其中遇到的最让人纠结的要属Java、Android和iPhone三 个平台加解密不一致的问题。因为手机端后台通常是用JAVA开发的Web Service,Android和iPhone客户端调用 同样的Web Service接口,为了数据安全考虑,要对数据进行加密。头疼的问题就来了,很难编写出一套加密 程序,在3个平台间加解密的结果一致,总不能为Android和iPhone两个客户端各写一套Web Service接口吧? 我相信还会有很多朋友为此困惑,在此分享一套3DES加密程序,能够实现Java、Android和iPhone三个平台加 解密一致。

首先是JAVA端的加密工具类,它同样适用于Android端,无需任何修改,即可保证Java与 Android端的加解密一致,并且中文不会乱码。

package org.liuyq.des3;  

import java.security.Key;  

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

/**
 * 3DES加密工具类
 *
 * @author liufeng
 * @date 2012-10-11
 */
public class Des3 {
    // 密钥
    private final static String secretKey = "liuyunqiang@lx100$#365#$";
    // 向量
    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);
    }
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
, string
, 加密
, iphone
, cipher
, des 加解密
, 3des
, 3des mac
, 加密java接口管理
, 服务器乱码android
, 图片android乱码
, 网页加密android开发
, android乱码安卓乱码
openssl加解密des
android 加密工具类、android apk加密工具、md5中文加密不一致、js md5中文加密不一致、md5加密不一致,以便于您获取更多的相关知识。

时间: 2024-12-03 07:04:09

Android、iPhone和Java三个平台一致的加密工具的相关文章

Android实训案例(三)——实现时间轴效果的ListView,加入本地存储,实现恋爱日记的效果!

Android实训案例(三)--实现时间轴效果的ListView,加入本地存储,实现恋爱日记的效果! 感叹离春节将至,也同时感叹时间不等人,一年又一年,可是我依然是android道路上的小菜鸟,这篇讲的是时间轴的实现,说实话,其实就是listview的偷梁换柱,本来我会在写listview这个系列的时候写的,但是最近自己写的一个项目<Only>上用到了,很多群友说也想看看怎么实现的,独乐乐不如众乐乐,所以就提前先来分享,说说listview,这可是一个名角,在android上很受欢迎,也很实用

Android 3.0发布 基于Linux平台的开源手机操作系统

Android 3.0发布基于Linux平台的开源手机操作系统的名称,该平台由操作系统.中间件.用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件.目前,http://www.aliyun.com/zixun/aggregation/29707.html">最新版本为Android 2.3 Gingerbread和Android 3.0 Honeycomb. Android是基于Linux内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统,早

美图秀秀设计分析:在Android,iPhone上的交互设计

文章描述:只是自己对于美图秀秀这款产品在设计上的一些想法,权当抛砖引玉,还请指点. 出于职业习惯,使用一款产品时总会不自觉地对其设计进行分析.当打开美图秀秀时,我知道,我又开始了. 美图秀秀是厦门美图科技有限公司旗下的一款产品,分别有 PC 客户端, Android, iPhone 应用.公司旗下还有其它几款产品:美图看看--免费看图软件,美图拍拍--摄像头自拍软件,美图淘淘--网店图片批理处理软件,美图化妆秀--强大的上妆软件.个人非常看好美图淘淘,依托淘宝这个大平台,它为广大淘宝店家们解决了

android 如何在java代码中方便的调用xml写的布局??

问题描述 android 如何在java代码中方便的调用xml写的布局?? 我想在activity刷新的时候重新生成一些xml写的布局,并放在 "求学"那一栏下: 想问一下有没有什么方便的方法??? 解决方案 可控的话 先加载求学哪里 先设visible为gone. 需要的时候设置为visible 解决方案二: 楼上说得对,先把控件实例化然后把visiblity设为gone 然后调用刷新按钮的时候吧实例传过去,再重新设置visiblity 解决方案三: 一种是隐藏然后显示,最好是用动态

Android NFC技术(三)——初次开发Android NFC你须知道NdefMessage和NdefRecord

Android NFC技术(三)--初次开发Android NFC你须知道NdefMessage和NdefRecord 这最近也是有好多天没写博客了,除了到处张罗着搬家之外,依旧还是许许多多的琐事阻碍着学习,加上使用NFC开发,也是需要具有NFC功能的测试机,也到买了一个,所以,也说了两天的概念 Android NFC开发(一)--初探NFC,了解当前前沿技术 Android NFC开发(二)--Android世界里的NFC所具备的条件以及使用方法 今天,咋们就来用一个小栗子做药引,一起进入An

JAVA学习(一):Java介绍及其平台、开发环境的配置与搭建

Java介绍及其平台.开发环境的配置与搭建 1.Java的介绍 Java是一种面向对象的编程语言,具有跨平台.可移植.分布式.简单.可扩展等诸多特性.Java可以进行桌面应用.Web应用.分布式系统及嵌入式等应用程序的开发. Java包含3个不同版本,即J2ME/J2EE/J2SE(微缩版/企业版/标准版). 2.JDK的下载与安装.配置 (1).JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

利用FRIDA攻击Android应用程序(三)

利用FRIDA攻击Android应用程序(三)       前言 在我的有关frida的第二篇博客发布不久之后,@muellerberndt决定发布另一个OWASP Android crackme,我很想知道是否可以再次用frida解决.如果你想跟着我做一遍,你需要下面的工具. OWASP Uncrackable Level2 APK Android SDK和模拟器(我使用的是Android 7.1 x64镜像) frida(和frida-server) bytecodeviewer radar

android中的java简单语法问题

问题描述 android中的java简单语法问题 android中java代码 Button simple = (Button) findViewById(R.id.simple)那个括号里的Button是类名吗?这里为什么写上(Button)而不是new呢?请原谅我java都没有学完就被逼着学android 解决方案 可以将(Button)理解为强制转换,因为findViewById(R.id.simple)这句话通过字面理解就是通过ID找到simple这个控件该控件属于view类型, 而你前

2010年初在csdn上有一个java快速开发平台的广告

问题描述 2010年初在csdn上有一个java快速开发平台的广告,csdn首页左上角.是关于从国外引进的javaweb快速开发平台,当时看了一下觉得很不错,只是他们的框架只能运行于ie浏览器.现在什么找都找不到这家公司的资料了.不知有哪位仁兄还记得他们的网址,请告知,多谢. 解决方案 解决方案二:囧,这个真不知道,话说LZ结帖率高的很啊解决方案三:都删除了去哪里找去呀...LZ帖子被删除了很多呀...解决方案四:这个真不知道解决方案五:现在才觉得那个东西好,可惜搜不到.