java消息机制加密器

浅析java的网络安全加密技术_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&100W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
浅析java的网络安全加密技术
阅读已结束,下载本文需要
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩4页未读,
定制HR最喜欢的简历
你可能喜欢java 加密技术(一)
1. java安全介绍
2. Base64加密
3. 消息摘要–MD
4. SHA消息摘要
1 java安全介绍
1.1 java安全组成
JCA (java Cryptography Architecture) java加密体系结构
JCE (java Cryptography Extension) java加密扩展包
JSSE(java Secure Socket Extension) java安全套接字的扩展包
JAAS (java Authentication and Authentication Service) java鉴别与安全服务
1.2 相关java包
java.security :信息摘要相关的包
javax.crypto: 安全消息摘要,消息验证码
java.net.ssl : 安全套接字
1.3 扩展jar包
Bouncy Castle
Commons Codec (Apache提供; Base64,二进制,十六进制, 字符集编码; Url编码/解码)
2 Base64加密
2.1 Base64介绍
严格意义上,Base64算法不算是加解密算法,主要是进行编码工作,它可以将特殊字符编码成非特殊字符.但是存储空间会比加密之前的文件存储空间多出1/3.
2.2 代码实现
下面我们简称java提供的jar包实现叫做jdk实现,Bouncy Castle的实现叫做BC实现, Commons Codec实现叫做CC实现.
import java.util.Base64;
import java.util.Base64.D
import java.util.Base64.E
public class Base64Test {
public static String src = "i am gc base64";
public static void main(String[] args) {
//jdk对Base64编码的支持
System.out.println("=====jdkBase64编码测试=====");
jdkBase64();
System.out.println("==========================");
System.out.println("=====CommonsCodec的Base64实现=====");
commonsCodecBase64();
System.out.println("==========================");
System.out.println("=====BouncyCastle的Base64实现=====");
bouncyCastleBase64();
System.out.println("==========================");
public static void jdkBase64(){
//获取Encoder对象
Encoder encoder = Base64.getEncoder();
//用Encoder对象对字符串进行加密
byte[] result = encoder.encode(src.getBytes());
System.out.println("Base64编码之后::"+new String(result));
//获取Decoder对象
Decoder decoder = Base64.getDecoder();
//用Decoder对象对加密之后的文件进行解密
result = decoder.decode(result);
System.out.println("将result解码之后:"+new String(result));
public static void commonsCodecBase64(){
//commonscodec的方便之处在于直接用Base64.encoderBase64和Base64.decoderBase64进行加解密
byte[] result = org.apache.commons.codec.binary.Base64.encodeBase64(src.getBytes());
System.out.println("Base64编码之后:"+new String(result));
result = org.apache.commons.codec.binary.Base64.decodeBase64(result);
System.out.println("Base64解密之后:"+new String(result));
public static void bouncyCastleBase64(){
byte[] result = org.bouncycastle.util.encoders.Base64.encode(src.getBytes());
System.out.println("Base64编码之后:"+new String(result));
result = org.bouncycastle.util.encoders.Base64.decode(result);
System.out.println("Base64解密之后:"+new String(result));
//运行结果如下
=====jdkBase64编码测试=====
Base64编码之后::aSBhbSBnYyBiYXNlNjQ=
将result解码之后:i am gc base64
==========================
=====CommonsCodec的Base64实现=====
Base64编码之后:aSBhbSBnYyBiYXNlNjQ=
Base64解密之后:i am gc base64
==========================
=====BouncyCastle的Base64实现=====
Base64编码之后:aSBhbSBnYyBiYXNlNjQ=
Base64解密之后:i am gc base64
==========================
其实无论是bc或者cc都提供了static方法对Base64加解密进行很好的操作支持
不建议使用jdk提供的方法进行操作
2.3 Base64应用场景
base64其实不算是加密,可以说是一种转码.比如对一些特殊字符的处理; 对文件内容的转码等.
3 消息摘要–MD
MD家族包括MD2, MD4, MD5,他们生成的消息摘要都是128位. 安全性上的比较也是越来越安全.
JDK仅仅提供了MD2,MD5的实现.
3.2 代码实现
import java.security.MessageD
import java.security.NoSuchAlgorithmE
import org.apache.commons.codec.binary.H
import org.apache.commons.codec.digest.DigestU
import org.bouncycastle.crypto.D
import org.bouncycastle.crypto.digests.MD4D
import org.bouncycastle.crypto.digests.MD5D
public class MDTest {
public static String src = "i am gc MD";
public static void main(String[] args) {
System.out.println("=====jdk提供的MD5=====");
System.out.println("=====================");
System.out.println("=====jdk提供的MD2=====");
System.out.println("=====================");
System.out.println("=====BC提供的MD4=====");
System.out.println("=====================");
System.out.println("=====BC提供的MD5=====");
System.out.println("=====================");
System.out.println("=====CC提供的MD5=====");
System.out.println("=====================");
System.out.println("=====CC提供的MD2=====");
System.out.println("=====================");
//运行结果
/*=====jdk提供的MD5=====
信息摘要之后的src: 8a63f68d49d7acfaab620394
=====================
=====jdk提供的MD2=====
信息摘要之后的src: 2d2df5c04ceeaac31bdffb019ccd03c8
=====================
=====BC提供的MD4=====
信息摘要之后的src: 5ff5d77dfff19ac2f5e2e2a
=====================
=====BC提供的MD5=====
信息摘要之后的src: 8a63f68d49d7acfaab620394
=====================
=====CC提供的MD5=====
信息摘要之后的src: 8a63f68d49d7acfaab620394
=====================
=====CC提供的MD2=====
信息摘要之后的src: 2d2df5c04ceeaac31bdffb019ccd03c8
=====================
* jdkMD5方法
public static void jdkMD5(){
//jdk提供的MessageDegest类 创建对象时候需要传入参数,可以是MD5, MD2
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] result = md.digest(src.getBytes());
//因为digest方法返回的使一个byte数组,如果想输出字符串,必须将byte数组转化成16进制等,但是jdk并没有提供这样的方法,所以你可以选择自己写或者使用bc或cc提供的方法
//现在我们借助cc提供的方法
//输出32位16进制数
System.out.println("信息摘要之后的src: "+Hex.encodeHexString(result));
} catch (Exception e) {
e.printStackTrace();
* jdkMD2信息摘要
public static void jdkMD2(){
//jdk提供的MessageDegest类 创建对象时候需要传入参数,可以是MD5, MD2
MessageDigest md = MessageDigest.getInstance("MD2");
byte[] result = md.digest(src.getBytes());
//因为digest方法返回的使一个byte数组,如果想输出字符串,必须将byte数组转化成16进制等,但是jdk并没有提供这样的方法,所以你可以选择自己写或者使用bc或cc提供的方法
//现在我们借助cc提供的方法
//输出32位16进制数
System.out.println("信息摘要之后的src: "+Hex.encodeHexString(result));
} catch (Exception e) {
e.printStackTrace();
//bc实现MD4
public static void bcMD4(){
//Digest是一个借口,MD4Degist仅仅是一个实现类
Digest digest = new MD4Digest();
//进行摘要
digest.update(src.getBytes(), 0 , src.getBytes().length);
//获取算法摘要出来的长度
byte[] result = new byte[digest.getDigestSize()];
//摘要的输出到变量里
digest.doFinal(result, 0);
//进行转换输出
System.out.println("信息摘要之后的src: "+Hex.encodeHexString(result));
* bc实现MD5
* 跟bc实现MD4相似,在此不再加注释
public static void bcMD5(){
Digest digest = new MD5Digest();
digest.update(src.getBytes(), 0, src.getBytes().length);
byte[] result = new byte[digest.getDigestSize()];
digest.doFinal(result, 0);
System.out.println("信息摘要之后的src: "+Hex.encodeHexString(result));
* cc对MD5的实现
public static void ccMD5(){
//说实话.CC提供的DegistUtils工具类对信息摘要的实现真的是简单至极
String result = DigestUtils.md5Hex(src.getBytes());
System.out.println("信息摘要之后的src: "+result);
* cc对MD2的实现
public static void ccMD2(){
//说实话.CC提供的DegistUtils工具类对信息摘要的实现真的是简单至极
//但是CC做了个偷工减料的地方,CC仅仅是对jdk中MessageDegist的简单包装,所以CC中支持md4的实现
String result = DigestUtils.md2Hex(src.getBytes());
System.out.println("信息摘要之后的src: "+result);
3.3 MD5的应用
可以对用户注册的注册密码进行MD5消息摘要处理,然后再存数据库.当用户登陆时候,对用户输入的密码再次进行MD5,之后在与数据库中的MD5码进行比对.这样能够很好的对密码进行保护.但是要记住:MD5仅仅是单向的,不可逆的.
4 SHA消息摘要
SHA是一种安全散列算法,也是固定长度的消息摘要. 包括:SHA-1, SHA-2(SHA-224,SHA-256, SHA-384, SHA-512)
她是在MD4演变出来的
SHA-224等等后面的数字都使摘要的长度,比如SHA-224摘要出来的长度就是224位
这里面只有SHA-224 jdk没有提供实现
4,2 代码实现
import java.security.MessageD
import org.apache.commons.codec.binary.H
import org.apache.commons.codec.digest.DigestU
import org.bouncycastle.crypto.D
import org.bouncycastle.crypto.digests.SHA1D
import org.bouncycastle.crypto.digests.SHA224D
public class SHATest {
public static String src = "i am gc SHA";
public static void main(String[] args) {
System.out.println("=====jdk提供的SHA1=====");
jdkSHA1();
System.out.println("=====================");
System.out.println("=====bc提供的SHA1=====");
System.out.println("=====================");
System.out.println("=====cc提供的SHA1=====");
System.out.println("=====================");
System.out.println("=====bc提供的SHA-256=====");
jdkSHA256();
System.out.println("=====================");
System.out.println("=====bc提供的SHA224=====");
bcSHA224();
System.out.println("=====================");
//运行结果
=====jdk提供的SHA1=====
消息摘要之后:38acb459ee266ddb8
=====================
=====bc提供的SHA1=====
消息摘要之后:38acb459ee266ddb8
=====================
=====cc提供的SHA1=====
消息摘要之后:38acb459ee266ddb8
=====================
=====bc提供的SHA-256=====
消息摘要之后:dd855bed3dce767ad1ce3f051b8d6fba12a0c00fe2feaa142ca37f2ae88fbca3
=====================
=====bc提供的SHA224=====
消息摘要之后:f2a63bc30d2d8fcebc9b5aa4f660b6f346dbd55a1a2f
=====================
* jdk对SHA算法实现
public static void jdkSHA1() {
MessageDigest digest = MessageDigest.getInstance("SHA1");
result = digest.digest(src.getBytes());
System.out.println("消息摘要之后:" + Hex.encodeHexString(result));
} catch (Exception e) {
e.printStackTrace();
* bc实现SHA1
public static void bcSHA1() {
// 因为都是用Digest接口里的方法,在MD代码里已经注释了,这里就不再叙述
Digest digest = new SHA1Digest();
digest.update(src.getBytes(), 0, src.getBytes().length);
byte[] result = new byte[digest.getDigestSize()];
digest.doFinal(result, 0);
System.out.println("消息摘要之后:" + Hex.encodeHexString(result));
* jdk对SHA-256的支持
public static void jdkSHA256() {
MessageDigest digest = MessageDigest.getInstance("SHA-256");
result = digest.digest(src.getBytes());
System.out.println("消息摘要之后:" + Hex.encodeHexString(result));
} catch (Exception e) {
e.printStackTrace();
* bc实现SHA224
public static void bcSHA224() {
// 因为都是用Digest接口里的方法,在MD代码里已经注释了,这里就不再叙述
Digest digest = new SHA224Digest();
digest.update(src.getBytes(), 0, src.getBytes().length);
byte[] result = new byte[digest.getDigestSize()];
digest.doFinal(result, 0);
System.out.println("消息摘要之后:" + Hex.encodeHexString(result));
* cc对SHA1的实现
* 其实也是对jdk的包装
public static void ccSHA1(){
String result = DigestUtils.sha1Hex(src.getBytes());
System.out.println("消息摘要之后:" +result);
* 其余的SHA实现都与上面的方法相同
一些证书中的指纹摘要
对发送的消息进行验证,消息是否被篡改
文章中避免不了错误的出现,如果有读者发现文章中的错误,或者有疑问的地方,请留言/Email To Gc
请转发OR复制的同学,标注出处,尊重作者劳动成果,谢谢亲
博客地址迁移至
Java 加密算法(一)
个人博客:haichenyi.com。感谢关注
补充知识点:
字节:也就是 byte 是一种统计单位,表示数量的多少
字符:是指计算机中使用的文字和符号,比如:1、2、3、A、S、D、$、%...
分享Java常用几种加密算法(四种)
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的详细规范。本文给大家分享java常用的几种加密算法,需要的朋友可以参考下...
java加密技术一(单向加密算法)
java加密之单向加密算法:MD5,SHA,HMAC。
一、MD5加密算法:
* MD5加密算法
* @param data 要加密的数据
Java常用加密技术和代码总结
Java常用加密技术和代码总结,还通过一些生活中容易理解的场景来解释算法复杂的逻辑。...
总结Java常用到的六个加密技术和代码
加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。大体上分为双向加密和单向加密,而双向加密又分为对称加密和非对称加密(有些...
&em&Java加密技术&/em&(一),相当有用的加密技术,值得学习参考!希望对你有点帮助!
最近项目中设计加密解密的技术应用场景比较多,因此总结一下JAVA中常见的加密技术。今天总结一下MD5加密。
一、MD5的必要性以及实际应用场景
MD5为计算机安全领域广泛使用的一种散列函数,用以提...
如基本的单向加密算法:
BASE64 严格地说,属于编码格式,而非加密算法
MD5(Message Digest algorithm 5,信息摘要算法)
from:http://www.jb51.net/article/73292.htm
对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥(mi ...
Java加密技术
没有更多推荐了,JAVA采用DES算法进行加密解密文件 - 『编程语言区』
- 吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52pojie.cn
后使用快捷导航没有帐号?
只需一步,快速开始
请完成以下验证码
请完成以下验证码
查看: 2519|回复: 13
JAVA采用DES算法进行加密解密文件
阅读权限10
本板块禁止发布 “电子书资料” ,此类主题请发布至。
本板块禁止发布讨论和求助帖,此类主题请发布至。
本板块禁止发布 “视频教程” ,此类主题请发布至。
前段时间有个朋友说要一份加密程序,闲来无事写了一份加密程序
源码如下:
[Java] 纯文本查看 复制代码
import java.io.FileInputS
import java.io.FileOutputS
import java.io.InputS
import java.io.OutputS
import java.security.K
import java.security.SecureR
import javax.crypto.C
import javax.crypto.CipherInputS
import javax.crypto.CipherOutputS
import javax.crypto.KeyG
public class key {
public key(String str) {
getKey(str);//生成密匙
* 根据参数生成KEY
public void getKey(String strKey) {
KeyGenerator _generator = KeyGenerator.getInstance(&DES&);
_generator.init(new SecureRandom(strKey.getBytes()));
this.key = _generator.generateKey();
_generator =
} catch (Exception e) {
throw new RuntimeException(&Error initializing SqlMap class. Cause: & + e);
* 文件file进行加密并保存目标文件destFile中
* @param file
要加密的文件 如c:/test/srcFile.txt
* @param destFile 加密后存放的文件名 如c:/加密后文件.txt
public void encrypt(String file, String destFile) throws Exception {
Cipher cipher = Cipher.getInstance(&DES&);
// cipher.init(Cipher.ENCRYPT_MODE, getKey());
cipher.init(Cipher.ENCRYPT_MODE, this.key);
InputStream is = new FileInputStream(file);
OutputStream out = new FileOutputStream(destFile);
CipherInputStream cis = new CipherInputStream(is, cipher);
byte[] buffer = new byte[1024];
while ((r = cis.read(buffer)) & 0) {
out.write(buffer, 0, r);
cis.close();
is.close();
out.close();
* 文件采用DES算法解密文件
* @param file 已加密的文件 如c:/加密后文件.txt
* @param destFile
解密后存放的文件名 如c:/ test/解密后文件.txt
public void decrypt(String file, String dest) throws Exception {
Cipher cipher = Cipher.getInstance(&DES&);
cipher.init(Cipher.DECRYPT_MODE, this.key);
InputStream is = new FileInputStream(file);
OutputStream out = new FileOutputStream(dest);
CipherOutputStream cos = new CipherOutputStream(out, cipher);
byte[] buffer = new byte[1024];
while ((r = is.read(buffer)) &= 0) {
System.out.println();
cos.write(buffer, 0, r);
cos.close();
out.close();
is.close();
public static void main(String[] args) throws Exception {
key td = new key(&aaa&);
td.decrypt(&D:/gx.txt&, &d:/r1.txt&); //解密
本帖被以下淘专辑推荐:
& |主题: 300, 订阅: 49
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
这个能看懂么?
[Java] 纯文本查看 复制代码package com.xxxx.mobile.apad.utils.
import java.io.IOE
import java.io.InputS
import java.io.UnsupportedEncodingE
public class NetTools
public static final String[] hex = { &%00&, &%01&, &%02&, &%03&, &%04&, &%05&, &%06&, &%07&, &%08&, &%09&, &%0a&, &%0b&, &%0c&, &%0d&, &%0e&, &%0f&, &%10&, &%11&, &%12&, &%13&, &%14&, &%15&, &%16&, &%17&, &%18&, &%19&, &%1a&, &%1b&, &%1c&, &%1d&, &%1e&, &%1f&, &%20&, &%21&, &%22&, &%23&, &%24&, &%25&, &%26&, &%27&, &%28&, &%29&, &%2a&, &%2b&, &%2c&, &%2d&, &%2e&, &%2f&, &%30&, &%31&, &%32&, &%33&, &%34&, &%35&, &%36&, &%37&, &%38&, &%39&, &%3a&, &%3b&, &%3c&, &%3d&, &%3e&, &%3f&, &%40&, &%41&, &%42&, &%43&, &%44&, &%45&, &%46&, &%47&, &%48&, &%49&, &%4a&, &%4b&, &%4c&, &%4d&, &%4e&, &%4f&, &%50&, &%51&, &%52&, &%53&, &%54&, &%55&, &%56&, &%57&, &%58&, &%59&, &%5a&, &%5b&, &%5c&, &%5d&, &%5e&, &%5f&, &%60&, &%61&, &%62&, &%63&, &%64&, &%65&, &%66&, &%67&, &%68&, &%69&, &%6a&, &%6b&, &%6c&, &%6d&, &%6e&, &%6f&, &%70&, &%71&, &%72&, &%73&, &%74&, &%75&, &%76&, &%77&, &%78&, &%79&, &%7a&, &%7b&, &%7c&, &%7d&, &%7e&, &%7f&, &%80&, &%81&, &%82&, &%83&, &%84&, &%85&, &%86&, &%87&, &%88&, &%89&, &%8a&, &%8b&, &%8c&, &%8d&, &%8e&, &%8f&, &%90&, &%91&, &%92&, &%93&, &%94&, &%95&, &%96&, &%97&, &%98&, &%99&, &%9a&, &%9b&, &%9c&, &%9d&, &%9e&, &%9f&, &%a0&, &%a1&, &%a2&, &%a3&, &%a4&, &%a5&, &%a6&, &%a7&, &%a8&, &%a9&, &%aa&, &%ab&, &%ac&, &%ad&, &%ae&, &%af&, &%b0&, &%b1&, &%b2&, &%b3&, &%b4&, &%b5&, &%b6&, &%b7&, &%b8&, &%b9&, &%ba&, &%bb&, &%bc&, &%bd&, &%be&, &%bf&, &%c0&, &%c1&, &%c2&, &%c3&, &%c4&, &%c5&, &%c6&, &%c7&, &%c8&, &%c9&, &%ca&, &%cb&, &%cc&, &%cd&, &%ce&, &%cf&, &%d0&, &%d1&, &%d2&, &%d3&, &%d4&, &%d5&, &%d6&, &%d7&, &%d8&, &%d9&, &%da&, &%db&, &%dc&, &%dd&, &%de&, &%df&, &%e0&, &%e1&, &%e2&, &%e3&, &%e4&, &%e5&, &%e6&, &%e7&, &%e8&, &%e9&, &%ea&, &%eb&, &%ec&, &%ed&, &%ee&, &%ef&, &%f0&, &%f1&, &%f2&, &%f3&, &%f4&, &%f5&, &%f6&, &%f7&, &%f8&, &%f9&, &%fa&, &%fb&, &%fc&, &%fd&, &%fe&, &%ff& };
public static final String decode(String paramString1, String paramString2)
throws UnsupportedEncodingException
if (paramString1 == null) {
int j = 0;
int n = paramString1.length();
if (n &= 500) {}
StringBuffer localStringB
for (int i =; i = n / 2)
localStringBuffer = new StringBuffer(i);
if (paramString2.length() != 0) {
throw new UnsupportedEncodingException(&URLDecoder: empty string enc parameter&);
Object localObject3 = (byte[])
Object localObject1;
if (i &= n)
if (j != 0) {
return localStringBuffer.toString();
c = paramString1.charAt(i);
switch (c)
localStringBuffer.append(c);
localStringBuffer.append(' ');
localObject1 = localObject3;
if (localObject3 == null) {
localObject1 = new byte[(n - i) / 3];
if ((i & n) && (i1 == 37))
localObject3 = localObject1;
throw new IllegalArgumentException(&URLDecoder: Incomplete trailing escape (%) pattern&);
int m = k + 1;
localObject3 = localObject1;
localObject1[k] = ((byte)Integer.parseInt(paramString1.substring(i + 1, i + 3), 16));
if (i & n)
localObject3 = localObject1;
i1 = paramString1.charAt(i);
break label317;
localObject3 = localObject1;
localStringBuffer.append(new String((byte[])localObject1, 0, k, paramString2));
break label344;
return paramString1;
break label317;
if (i + 2 &= n) {
} while (i1 == 37);
catch (NumberFormatException localNumberFormatException)
Object localObject2 = localObject3;
localObject3 = localObject2;
public static byte[] receive(InputStream paramInputStream, int paramInt)
if (paramInputStream == null) {
Object localObject1 = (byte[])
Object localObject2;
if (paramInt & 0)
localObject2 = new byte[paramInt];
int j = 0;
int k = paramInputStream.read((byte[])localObject2, i, paramInt - i);
catch (IOException localIOException1)
byte[] arrayOfB
break label40;
if (j &= 0) {
return localObject2;
arrayOfByte = new byte[102400];
paramInt = 0;
i = paramInputStream.read(arrayOfByte);
paramInt =
catch (IOException localIOException2)
break label72;
localObject2 = localObject1;
if (paramInt & 0) {
if (localObject1 == null)
localObject1 = new byte[paramInt];
System.arraycopy(arrayOfByte, 0, localObject1, 0, paramInt);
localObject2 = new byte[localObject1.length + paramInt];
System.arraycopy(localObject1, 0, localObject2, 0, localObject1.length);
System.arraycopy(arrayOfByte, 0, localObject2, localObject1.length, paramInt);
localObject1 = localObject2;
public static final String urlEncode(String paramString)
if ((paramString == null) || (paramString.length() & 1)) {
return &&;
StringBuffer localStringBuffer = new StringBuffer();
int j = paramString.length();
int i = 0;
if (i &= j) {
return localStringBuffer.toString();
int k = paramString.charAt(i) & 0xFFFF;
if ((65 &= k) && (k &= 90)) {
localStringBuffer.append((char)k);
if ((97 &= k) && (k &= 122))
localStringBuffer.append((char)k);
else if ((48 &= k) && (k &= 57))
localStringBuffer.append((char)k);
else if (k == 32)
localStringBuffer.append('+');
else if ((k == 45) || (k == 95) || (k == 46) || (k == 33) || (k == 42) || (k == 40) || (k == 41))
localStringBuffer.append((char)k);
else if (k &= 127)
localStringBuffer.append(hex[k]);
else if (k &= 2047)
localStringBuffer.append(hex[(k && 6 | 0xC0)]);
localStringBuffer.append(hex[(k & 0x3F | 0x80)]);
localStringBuffer.append(hex[(k && 12 | 0xE0)]);
localStringBuffer.append(hex[(k && 6 & 0x3F | 0x80)]);
localStringBuffer.append(hex[(k & 0x3F | 0x80)]);
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
向量呢,没有iv自定义吗?
没有& &&&我还写了一个可以自定义的& & 还没有写完& &写完应该会发出来
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限30
向量呢,没有iv自定义吗?
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
直接调用Jdk提供的加密算法?
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限25
TripleDES有24种情况
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
这个可以一试,不知道是否完整?
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
看的一脸懵逼_
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
直接调用Jdk提供的加密算法?
jdk8好像已经自带了jar包& & 如果是低版本的需要自己添加一个jar包
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
这个可以一试,不知道是否完整?
是完整的& &我已经测试过了才发出来的
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
看的一脸懵逼_
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
免责声明:吾爱破解所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。
( 京ICP备号 | 京公网安备 87号 )
Powered by Discuz!
Comsenz Inc.

我要回帖

更多关于 java消息服务 的文章

 

随机推荐