快速业务通道

JAVA上加密算法的实现用例笔记 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
;n++)    {    stmp=(java.lang.Integer.toHexString(b[n] & 0XFF));    if (stmp.length()==1) hs=hs+"0"+stmp;    else hs=hs+stmp;    if (n<b.length-1)  hs=hs+":";    }    return hs.toUpperCase();    }   }

JAVA上加密算法的实现用例笔记(8)

时间:2011-10-16

2.4. DESede/DES对称算法

首先生成密钥,并保存(这里并没的保存的代码,可参考DSA中的方法)

KeyGenerator keygen = KeyGenerator.getInstance(Algorithm);

SecretKey deskey = keygen.generateKey();

用密钥加密明文(myinfo),生成密文(cipherByte)

Cipher c1 = Cipher.getInstance(Algorithm);

c1.init(Cipher.ENCRYPT_MODE,deskey);

byte[] cipherByte=c1.doFinal(myinfo.getBytes());

传送密文和密钥,本文没有相应代码可参考DSA

.............

用密钥解密密文

c1 = Cipher.getInstance(Algorithm);

c1.init(Cipher.DECRYPT_MODE,deskey);

byte[] clearByte=c1.doFinal(cipherByte);

相对来说对称密钥的使用是很简单的,对于JCE来讲支技DES,DESede,Blowfish三种加密术

对于密钥的保存各传送可使用对象流或者用二进制编码,相关参考代码如下

SecretKey deskey = keygen.generateKey();

byte[] desEncode=deskey.getEncoded();

javax.crypto.spec.SecretKeySpec destmp=new javax.crypto.spec.SecretKeySpec (desEncode,Algorithm);

SecretKey mydeskey=destmp;

相关API

KeyGenerator 在DSA中已经说明,在添加JCE后在instance进可以如下参数

DES,DESede,Blowfish,HmacMD5,HmacSHA1

javax.crypto.Cipher 加/解密器

public static final Cipher getInstance(java.lang.String transformation)

throws java.security.NoSuchAlgorithmException,

NoSuchPaddingException

返回一个指定方法的Cipher对象

参数:transformation 方法名(可用 DES,DESede,Blowfish)

public final void init(int opmode, java.security.Key key)

throws java.security.InvalidKeyException

JAVA上加密算法的实现用例笔记(9)

时间:2011-10-16

用指定的密钥和模式初始化Cipher对象

参数:opmode 方式(ENCRYPT_MODE, DECRYPT_MODE, WRAP_MODE,UNWRAP_MODE)

key 密钥

  public final byte[] doFinal(byte[] input)    throws java.lang.IllegalStateException,    IllegalBlockSizeException,    BadPaddingException   对input内的串,进行编码处理,返回处理后二进制串,是返回解密文还是加 解文由init时的opmode决定   注意:本方法的执行前如果有update,是对updat和本次input全部处理 ,否则是本inout的内容   /*   安全程序 DESede/DES测试   */   import java.security.*;   import javax.crypto.*;   public class testdes {   public static void main(String[] args){    testdes my=new testdes();    my.run();    }   public  void run() {   //添加新安全算法,如果用JCE就要把它添加进去    Security.addProvider(new com.sun.crypto.provider.SunJCE());   String Algorithm="DES"; //定义 加密算法,可用 DES,DESede,Blowfish   String myinfo="要加密的信息";    try {    //生成密钥    KeyGenerator keygen = KeyGenerator.getInstance(Algorithm);    SecretKey deskey = keygen.generateKey();    //加密    System.out.println("加 密前的二进串:"+byte2hex(myinfo.getBytes()));    System.out.println("加密前的信 息:"+myinfo);    Cipher c1 = Cipher.getInstance(Algorithm);    c1.ini

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号