问题描述
对java不太熟悉,但是需要这个加密算法,转换成Objective-C能用的类,没办法,向大神求助java代码如下importjava.io.UnsupportedEncodingException;/***@author作者E-mail:*@version创建时间:2013-7-26下午12:05:06*类说明*/publicclassEncryptDecryptCode{staticbyte[]keys={0x6A,0x2D,0x11,0x3C,0x5E};//十六进制对应表staticfinalbyte[]HEX_CHAR_TABLE={(byte)'0',(byte)'1',(byte)'2',(byte)'3',(byte)'4',(byte)'5',(byte)'6',(byte)'7',(byte)'8',(byte)'9',(byte)'a',(byte)'b',(byte)'c',(byte)'d',(byte)'e',(byte)'f'};staticpublicbyte[]encrypt(byte[]src){returnencryptDecrypt(src,keys);}staticpublicbyte[]decrypt(byte[]src){returnencryptDecryptsrc(,keys);}staticpublicStringencrypt(Stringsrc){bytebSrc[]=hexStr2Bytes(src);returngetHexString(encryptDecrypt(bSrc,keys));}staticpublicStringdecrypt(Stringsrc){bytebSrc[]=hexStr2Bytes(src);returngetHexString(encryptDecrypt(bSrc,keys));}/***将两个string联合成byte**@paramsrc0*,src1*@returnret*/privatestaticbyteuniteBytes(Stringsrc0,Stringsrc1){byteb0=Byte.decode("0x"+src0).byteValue();b0=(byte)(b0<<4);byteb1=Byte.decode("0x"+src1).byteValue();byteret=(byte)(b0|b1);returnret;}/***十六进制字符串转换成bytes**@paramsrc*@returnret*/publicstaticbyte[]hexStr2Bytes(Stringsrc){intm=0,n=0;intl=src.length()/2;//System.out.println(l);byte[]ret=newbyte[l];for(inti=0;i<l;i++){m=i*2+1;n=m+1;ret[i]=uniteBytes(src.substring(i*2,m),src.substring(m,n));}returnret;}/***将byte数组转换为十六进制字符串**@paramraw*@returnString(hex,"ASCII")*/publicstaticStringgetHexString(byte[]raw){byte[]hex=newbyte[2*raw.length];intindex=0;for(byteb:raw){intv=b&0xFF;hex[index++]=HEX_CHAR_TABLE[v>>>4];hex[index++]=HEX_CHAR_TABLE[v&0xF];}try{returnnewString(hex,"ASCII");}catch(UnsupportedEncodingExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returnnull;}//java的加密算法/****@paramsrc*明文*@paramkeys*密钥*@return加密后的内容*/byteencryptDecrypt(byte[]src,byte[]keys){byte[]bs=newbyte[src.length];bytekey=keys[0];for(inti=0;i<bs.length;i++){for(intj=1;j<keys.length;j++){key^=keys[j];}bs[i]=(byte)(src[i]^key);}returnbs;}}
解决方案
本帖最后由 wowocltc 于 2013-12-26 13:47:18 编辑
解决方案二:
这是需要懂Java和OC的人才能帮你啊