java爬虫遇到参数加密该怎么办
1个回答
2016-07-11
展开全部
今天有空研究了下大家都在喊的AES加密!还以为是什么深奥的东西呢!终于了解了,心中释然了!跟大家一起分享下吧!DES其实就是:数据加密标准英文的缩写!就是个加密的标注而已,AES就是高级加密标准英文的缩写咯,大家都叫缩写叫惯了,搞得我们这些没接触的人一头雾水!心里还真憋屈的慌呢!这是在搜集资料的时候拿了个例子练手,不过有个问题就是,把这代码放到文本里用CMD运行的时候出现了乱码情况!所幸的是注释,不影响效果!但是,程序要真遇到这样的情况的话,就得转码了,因为文本的编码是GBK的,而我所要粘贴的代码的编码是UTF-8[html]viewplaincopyimportjava.util.*;importjava.io.*;publicclassTest{privateStringencodeResult;//编码后字串privateStringdecodeResult;//解码后字串publicTest(){}//编码设置publicvoidsetEncodeResult(StringencodeResult){char[]src=encodeResult.toCharArray();//将待编码字串拆分成字符数组StringBuildersb=newStringBuilder();//保存编码后字符//将待编码字串拆分成字符数组for(inti=0;i1)sb.append(temp[i].length()-1);elsesb.append(temp[i]);}this.decodeResult=newString(sb);}//获得解码后结果publicStringgetDecodeResult(){returndecodeResult;}publicstaticvoidmain(String[]args){System.out.println("请输入待编码字符串(以回车键结束):");//此处存在一个乱码问题,在文本文档中的编码是GBK而它的编码是UTF-8,cmd不识别!Stringsource="";try{BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));source=br.readLine();}catch(IOExceptione){e.printStackTrace();}Teste=newTest();e.setEncodeResult(source);System.out.println("编码后结果:"+e.getEncodeResult());e.setDecodeResult(e.getEncodeResult());System.out.println("解码后结果:"+e.getDecodeResult());}}[html]viewplaincopy请输入待编码字符串(以回车键结束):abcdc123编码后结果:a_b_c_d_c_22_333_3解码后结果:abcdc123【最简单的加密】1.简单的概念明文:加密前的信息密文:机密后的信息算法:加密或解密的算法密钥:算法使用的钥匙例子:将123456每位数字都加1后得到234567,其中123456就是明文,234567就是密文,加密密钥就是1,加密算法是每位加[html]viewplaincopyimportjava.security.SecureRandom;importjavax.crypto.Cipher;importjavax.crypto.KeyGenerator;importjavax.crypto.spec.SecretKeySpec;importsun.misc.BASE64Decoder;importsun.misc.BASE64Encoder;/***编码工具类*1.将byte[]转为各种进制的字符串*2.base64encode*3.base64decode*4.获取byte[]的md5值*5.获取字符串md5值*6.结合base64实现md5加密*7.AES加密*8.AES加密为base64code*9.AES解密*10.将base64codeAES解密*@authoruikoo9*@version0.0.7.20140601*/publicclassTest{publicstaticvoidmain(String[]args)throwsException{Stringcontent="我爱你,祖国";System.out.println("加密前:"+content);Stringkey="123456";System.out.println("加密密钥和解密密钥:"+key);Stringencrypt=aesEncrypt(content,key);System.out.println("加密后:"+encrypt);Stringdecrypt=aesDecrypt(encrypt,key);System.out.println("解密后:"+decrypt);}/***AES加密为base64code*@paramcontent待加密的内容*@paramencryptKey加密密钥*@return加密后的base64code*@throwsException*/publicstaticStringaesEncrypt(Stringcontent,StringencryptKey)throwsException{returnbase64Encode(aesEncryptToBytes(content,encryptKey));}/***AES加密*@paramcontent待加密的内容*@paramencryptKey加密密钥*@return加密后的byte[]*@throwsException*/publicstaticbyte[]aesEncryptToBytes(Stringcontent,StringencryptKey)throwsException{KeyGeneratorkgen=KeyGenerator.getInstance("AES");kgen.init(128,newSecureRandom(encryptKey.getBytes()));Ciphercipher=Cipher.getInstance("AES");cipher.init(Cipher.ENCRYPT_MODE,newSecretKeySpec(kgen.generateKey().getEncoded(),"AES"));returncipher.doFinal(content.getBytes("utf-8"));}/***base64encode*@parambytes待编码的byte[]*@return编码后的base64code*/publicstaticStringbase64Encode(byte[]bytes){returnnewBASE64Encoder().encode(bytes);}/***将base64codeAES解密*@paramencryptStr待解密的base64code*@paramdecryptKey解密密钥*@return解密后的string*@throwsException*/publicstaticStringaesDecrypt(StringencryptStr,StringdecryptKey)throwsException{returnaesDecryptByBytes(base64Decode(encryptStr),decryptKey);}/***AES解密*@paramencryptBytes待解密的byte[]*@paramdecryptKey解密密钥*@return解密后的String*@throwsException*/publicstaticStringaesDecryptByBytes(byte[]encryptBytes,StringdecryptKey)throwsException{KeyGeneratorkgen=KeyGenerator.getInstance("AES");kgen.init(128,newSecureRandom(decryptKey.getBytes()));Ciphercipher=Cipher.getInstance("AES");cipher.init(Cipher.DECRYPT_MODE,newSecretKeySpec(kgen.generateKey().getEncoded(),"AES"));byte[]decryptBytes=cipher.doFinal(encryptBytes);returnnewString(decryptBytes);}/***base64decode*@parambase64Code待解码的base64code*@return解码后的byte[]*@throwsException*/publicstaticbyte[]base64Decode(Stringbase64Code)throwsException{returnnewBASE64Decoder().decodeBuffer(base64Code);}}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询