赛迪网 > IT技术 Java > (最新更新)Java基础
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

Java编程中常用的加密算法MD5,SHA,RSA

发布时间:2007.11.29 04:58     来源:赛迪网技术社区    作者:执木

1. MD5加密,常用于加密用户名密码,当用户验证时。

protected byte[] encrypt(byte[] obj) ...{   try ...{   MessageDigest md5 = MessageDigest.getInstance("MD5");   md5.update(obj);   return md5.digest();   } catch (NoSuchAlgorithmException e) ...{   e.printStackTrace();   }   }

  2. SHA加密,与MD5相似的用法,只是两者的算法不同。

protected byte[] encrypt(byte[] obj) ...{   try ...{   MessageDigest sha = MessageDigest.getInstance("SHA");   sha.update(obj);   return sha.digest();   } catch (NoSuchAlgorithmException e) ...{   e.printStackTrace();   }   }

  3. RSA加密,RAS加密允许解密。常用于文本内容的加密。

 import java.security.KeyPair;    import java.security.KeyPairGenerator;    import java.security.interfaces.RSAPrivateKey;    import java.security.interfaces.RSAPublicKey;    import javax.crypto.Cipher;  /** *//**   * RSAEncrypt   *    * @author maqujun   * @see   */   public class RSAEncrypt ...{   /** *//**   * Main method for RSAEncrypt.   * @param args   */   public static void main(String[] args) ...{   try ...{   RSAEncrypt encrypt = new RSAEncrypt();   String encryptText = "encryptText";   KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");   keyPairGen.initialize(1024);   KeyPair keyPair = keyPairGen.generateKeyPair();   // Generate keys   RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();   RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();   byte[] e = encrypt.encrypt(publicKey, encryptText.getBytes());   byte[] de = encrypt.decrypt(privateKey,e);   System.out.println(encrypt.bytesToString(e));   System.out.println(encrypt.bytesToString(de));   } catch (Exception e) ...{   e.printStackTrace();   }   }   /** *//**   * Change byte array to String.   * @return byte[]   */   protected String bytesToString(byte[] encrytpByte) ...{   String result = "";   for (Byte bytes : encrytpByte) ...{   result += (char) bytes.intValue();   }   return result;   }   /** *//**   * Encrypt String.   * @return byte[]   */   protected byte[] encrypt(RSAPublicKey publicKey, byte[] obj) ...{   if (publicKey != null) ...{   try ...{   Cipher cipher = Cipher.getInstance("RSA");   cipher.init(Cipher.ENCRYPT_MODE, publicKey);   return cipher.doFinal(obj);   } catch (Exception e) ...{   e.printStackTrace();   }   }   return null;   }   /** *//**   * Basic decrypt method   * @return byte[]   */   protected byte[] decrypt(RSAPrivateKey privateKey, byte[] obj) ...{   if (privateKey != null) ...{   try ...{   Cipher cipher = Cipher.getInstance("RSA");   cipher.init(Cipher.DECRYPT_MODE, privateKey);   return cipher.doFinal(obj);   } catch (Exception e) ...{   e.printStackTrace();   }   }   return null;   }   }

 

 (责任编辑:包春林)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 进阶:Java Reflection (JAVA反射)详解 (11-28) · Java中消除实现继承和面向接口的编程 (11-28)
· JAVA基础:JAVA代码编写过程的30条建议 (11-28) · 想成为JAVA高手么,给你几个实用的方法 (11-27)
· Eclipse基础--plugin插件安装 (11-27) · 程序员都应该关注的问题:Java编程规则 (11-27)
· 程序员在开发过程中应该了解的编码规范 (11-27) · 程序员生活:Java语言学习从入门到精通 (11-27)
· 深入浅出--高手讲解Java的访问者模式 (11-27) · 详细解释 EJB 的体系结构的历史和目标 (11-27)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 信息化市场百家争鸣 SaaS深陷争议“泥潭”
· 提高管理水平 "两栖"CIO应具备的六大能力
· 国产ITIL运维先行者 四大厂商角力BI市场
· 金融行业GSN专题解决方案 企业网解决方案
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统