内外网与加密平台如何系统集成继续教育平台

1您所在的位置: &
Android、iPhone和Java三个平台一致的加密方法(1)
Android、iPhone和Java三个平台一致的加密方法(1)
先前一直在做安卓,最近要开发iPhone客户端,这其中遇到的最让人纠结的要属Java、Android和iPhone三个平台加解密不一致的问 题。因为手机端后台通常是用JAVA开发的Web Service,Android和iPhone客户端调用同样的Web Service接口,为了数据安全考虑,要对数据进行加密。
先前一直在做安卓,最近要开发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.K&&&&&&&&&&import&javax.crypto.C&&import&javax.crypto.SecretKeyF&&import&javax.crypto.spec.DESedeKeyS&&import&javax.crypto.spec.IvParameterS&&&&&&&&&&&&&&&&public&class&Des3&{&&&&&&&&&&&&&private&final&static&String&secretKey&=&&liuyunqiang@lx100$#365#$&&;&&&&&&&&&&&&&private&final&static&String&iv&=&&&&;&&&&&&&&&&&&&private&final&static&String&encoding&=&&utf-8&&;&&&&&&&&&&&&&&&&&&&&&&&&&&&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);&&&&&&&}&&&&&&&&&&&&&&&&&&&&&&&&&&&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);&&&&&&&}&&}&
上面的加密工具类会使用到Base64这个类,该类的源代码如下:
双击代码全选
package&org.liuyq.des3;&&import&java.io.ByteArrayOutputS&&import&java.io.IOE&&import&java.io.OutputS&&&&&&&&&&&&&&&&public&class&Base64&{&&&&&&&private&static&final&char&[]&legalChars&=&&ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/&&.toCharArray();&&&&&&&&&&&&&&&public&static&String&encode(&byte&[]&data)&{&&&&&&&&&&&int&start&=&0&;&&&&&&&&&&&int&len&=&data.&&&&&&&&&&&StringBuffer&buf&=&new&StringBuffer(data.length&*&3&/&2&);&&&&&&&&&&&&&&&&&&&int&end&=&len&-&3&;&&&&&&&&&&&int&i&=&&&&&&&&&&&&int&n&=&0&;&&&&&&&&&&&&&&&&&&&while&(i&&=&end)&{&&&&&&&&&&&&&&&int&d&=&((((&int&)&data[i])&&&0x0ff&)&&&&16&)&|&((((&int&)&data[i&+&1&])&&&0x0ff&)&&&&8&)&|&(((&int&)&data[i&+&2&])&&&0x0ff&);&&&&&&&&&&&&&&&&&&&&&&&buf.append(legalChars[(d&&&&18&)&&&63&]);&&&&&&&&&&&&&&&buf.append(legalChars[(d&&&&12&)&&&63&]);&&&&&&&&&&&&&&&buf.append(legalChars[(d&&&&6&)&&&63&]);&&&&&&&&&&&&&&&buf.append(legalChars[d&&&63&]);&&&&&&&&&&&&&&&&&&&&&&&i&+=&3&;&&&&&&&&&&&&&&&&&&&&&&&if&(n++&&=&14&)&{&&&&&&&&&&&&&&&&&&&n&=&0&;&&&&&&&&&&&&&&&&&&&buf.append(&&&&&);&&&&&&&&&&&&&&&}&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&if&(i&==&start&+&len&-&2&)&{&&&&&&&&&&&&&&&int&d&=&((((&int&)&data[i])&&&0x0ff&)&&&&16&)&|&((((&int&)&data[i&+&1&])&&&255&)&&&&8&);&&&&&&&&&&&&&&&&&&&&&&&buf.append(legalChars[(d&&&&18&)&&&63&]);&&&&&&&&&&&&&&&buf.append(legalChars[(d&&&&12&)&&&63&]);&&&&&&&&&&&&&&&buf.append(legalChars[(d&&&&6&)&&&63&]);&&&&&&&&&&&&&&&buf.append(&&=&&);&&&&&&&&&&&}&else&if&(i&==&start&+&len&-&1&)&{&&&&&&&&&&&&&&&int&d&=&(((&int&)&data[i])&&&0x0ff&)&&&&16&;&&&&&&&&&&&&&&&&&&&&&&&buf.append(legalChars[(d&&&&18&)&&&63&]);&&&&&&&&&&&&&&&buf.append(legalChars[(d&&&&12&)&&&63&]);&&&&&&&&&&&&&&&buf.append(&&==&&);&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&return&buf.toString();&&&&&&&}&&&&&&&&&&&&&&&private&static&int&decode(&char&c)&{&&&&&&&&&&&if&(c&&=&'A'&&&&c&&=&'Z'&)&&&&&&&&&&&&&&&return&((&int&)&c)&-&65&;&&&&&&&&&&&else&if&(c&&=&'a'&&&&c&&=&'z'&)&&&&&&&&&&&&&&&return&((&int&)&c)&-&97&+&26&;&&&&&&&&&&&else&if&(c&&=&'0'&&&&c&&=&'9'&)&&&&&&&&&&&&&&&return&((&int&)&c)&-&48&+&26&+&26&;&&&&&&&&&&&else&&&&&&&&&&&&&&switch&(c)&{&&&&&&&&&&&&&&&case&'+'&:&&&&&&&&&&&&&&&&&&&return&62&;&&&&&&&&&&&&&&&case&'/'&:&&&&&&&&&&&&&&&&&&&return&63&;&&&&&&&&&&&&&&&case&'='&:&&&&&&&&&&&&&&&&&&&return&0&;&&&&&&&&&&&&&&&default&:&&&&&&&&&&&&&&&&&&&throw&new&RuntimeException(&&unexpected&code:&&&+&c);&&&&&&&&&&&&&&&}&&&&&&&}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&public&static&byte&[]&decode(String&s)&{&&&&&&&&&&&&&&&&&&&ByteArrayOutputStream&bos&=&new&ByteArrayOutputStream();&&&&&&&&&&&try&{&&&&&&&&&&&&&&&decode(s,&bos);&&&&&&&&&&&}&catch&(IOException&e)&{&&&&&&&&&&&&&&&throw&new&RuntimeException();&&&&&&&&&&&}&&&&&&&&&&&byte&[]&decodedBytes&=&bos.toByteArray();&&&&&&&&&&&try&{&&&&&&&&&&&&&&&bos.close();&&&&&&&&&&&&&&&bos&=&null&;&&&&&&&&&&&}&catch&(IOException&ex)&{&&&&&&&&&&&&&&&System.err.println(&&Error&while&decoding&BASE64:&&&+&ex.toString());&&&&&&&&&&&}&&&&&&&&&&&return&decodedB&&&&&&&}&&&&&&&&&&&&&&&private&static&void&decode(String&s,&OutputStream&os)&throws&IOException&{&&&&&&&&&&&int&i&=&0&;&&&&&&&&&&&&&&&&&&&int&len&=&s.length();&&&&&&&&&&&&&&&&&&&while&(&true&)&{&&&&&&&&&&&&&&&while&(i&&&len&&&&s.charAt(i)&&=&'&'&)&&&&&&&&&&&&&&&&&&&i++;&&&&&&&&&&&&&&&&&&&&&&&if&(i&==&len)&&&&&&&&&&&&&&&&&&&break&;&&&&&&&&&&&&&&&&&&&&&&&int&tri&=&(decode(s.charAt(i))&&&&18&)&+&(decode(s.charAt(i&+&1&))&&&&12&)&+&(decode(s.charAt(i&+&2&))&&&&6&)&+&(decode(s.charAt(i&+&3&)));&&&&&&&&&&&&&&&&&&&&&&&os.write((tri&&&&16&)&&&255&);&&&&&&&&&&&&&&&if&(s.charAt(i&+&2&)&==&'='&)&&&&&&&&&&&&&&&&&&&break&;&&&&&&&&&&&&&&&os.write((tri&&&&8&)&&&255&);&&&&&&&&&&&&&&&if&(s.charAt(i&+&3&)&==&'='&)&&&&&&&&&&&&&&&&&&&break&;&&&&&&&&&&&&&&&os.write(tri&&&255&);&&&&&&&&&&&&&&&&&&&&&&&i&+=&4&;&&&&&&&&&&&}&&&&&&&}&&}&
内容导航&第 1 页: &第 2 页:
关于&&的更多文章
Java 8版本最大的改进就是Lambda表达式,其目的是使Java更易于为
网友评论TOP5
本次的专刊为大家提供了Oracle最新推出的Java SE 8详细的开发教程,从解读到探究Java 8最新
讲师: 0人学习过讲师: 31人学习过讲师: 50人学习过
借助Google的三大论文,Hadoop打开了低成本海量数据处
春运大军前天正式启动了。昨天的新闻有几条不怎么好的
每年的一月份大约都是在看似忙忙碌碌中度过的。最近一
Visual C++ 6.0是Microsoft公司的Visual Studio开发组件中最强大的编程工具,利用它可以开发出高性能的应用程序。本书由浅入深,
51CTO旗下网站相关期刊文献推荐
相关会议文献推荐
相关硕士文献推荐
相关博士文献推荐抱歉,您来晚了,该商品团购已经结束!不想错过明天的团购?立刻订阅每日最新团购信息:
国内最早最好的《多多淘宝客返利程序-V8新版》+(V8版新增淘宝商品晒单、分享功能,SEO个性设置,淘宝图片伪本地化,淘宝连接自加密和独立整合PhPwind论坛及Uc会员,支持QQ、淘宝等账号一键登录!)轻松做淘客,抢先买先赚钱,活跃亿万淘宝市场
已结束&180
《多多淘宝客返利程序-V8新版》新增①分享晒单返利②SEO个性设置③淘宝图片伪本地 ④淘宝连接自加密/支持QQ、淘宝等账号一键登录!
分享给好友购买
今日其它团购
团购价:&1000
团购价:&100
客服电话:
400-034-6880
工作时间: 9:00-22:00 (每天)
团购投稿/商务合作
希望在网赚团(原80楼团购网)组织团购么?请
可以用手机团购啦!
手机输入:
随时随地第一时间团购!
提示:手机版本目前仅支持余额支付,请确保在团购网站进行过充值操作。
15天未消费一键退款中国互联网信用评价中心网信认证商务部中国国际电子商务中心信用网站认证支付宝特约商家财付通诚信商家

我要回帖

更多关于 互联网电视集成平台 的文章

 

随机推荐