MDUtil

/**
 *          @(#) MDUtil.java
 */
package edu.hust.util.security;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
 *       MDUtil is a util tool for message digest.
 *       There are two MessageDigitest algorithm supported: MD5 and SHA-1
 *         
 *       @author quickpoint
 *       @version 1.0 06/21/2005    
 *
 */
public class MDUtil {
     // algorithm md5   
        public static final String MD5 = "MD5";
        // algoritym sha-1
        public static final String SHA = "SHA-1";

        // hex digits
        private static final String[] hexDigits = {
           "0", "1", "2", "3", "4", "5", "6", "7",
            "8", "9", "a", "b", "c", "d", "e", "f"
          };
         
         /**
          *   Convert byte array to hex string
          *   @param b byte array
          *   @return hex string
          */
         public static String byteArrayToHexString( byte[] b ) {
              StringBuffer buf = new StringBuffer();
              for( int i = 0; i < b.length; i++) {
                  buf.append( byteToHexString( b[i]));
              }
                  return buf.toString();
           }
        
         /**
          *    Convert byte to hex String
          *    @param b byte
          *    @return hex String
          */
         private static String byteToHexString( byte b ) {
               int n = b;
               // n < 0 then make n positive
               if( n < 0 )  {
                     n += 256;
               }
               int d1 = n >> 4; // upper bit
               int d2 = n % 16; // lower bit
               
               return hexDigits[d1] + hexDigits[d2];
         }
        
          /**
           *   Encode Message Digest with algorithm
           *   @param origin information string
           *   @param algorithm  algorithm used in digest
           *   @return byte array of message digest
           *   @exception NoSuchAlgorithmException throws when algorithm does not support
           */
          public static byte[] encode( String origin, String algorithm )
                      throws NoSuchAlgorithmException
           {
               String resultStr = null;
               resultStr = new String(origin );
               MessageDigest md = MessageDigest.getInstance( algorithm );
               md.update( resultStr.getBytes());
               return md.digest();
           }
          
           /**
            *   Encode Message Digest with MD5
            *   @param origin information string
            *   @return byte array of message digest
            *   @exception NoSuchAlgorithmException throws when MD5 does not support.
            */  
           public static byte[] encodeWithMD5( String origin )
                    throws NoSuchAlgorithmException
           {
                return encode( origin, MDUtil.MD5);
           }
           
           /**
            *   Encode Message Digest with SHA
            *   @param origin information string
            *   @return byte array of message digest
            *   @exception NoSuchAlgorithmException throws when SHA does not support
            */   
           public static byte[] encodeWithSHA( String origin )
                    throws NoSuchAlgorithmException
           {
                return encode( origin, MDUtil.SHA);
           }
          
           /**
            *   Encode Message Digest with algorithm   
            *   @param origin information string
            *   @param algorithm algorithm used in digest
            *   @return message digest( in string ) or null
            */  
           public static String encodeToString( String origin, String algorithm ) {
                  String resultStr = null;
                  try { 
                     return byteArrayToHexString(encode( origin, algorithm));
                  } catch ( NoSuchAlgorithmException ex ) {
                     return null;
                  }        
           }
           
           /**
            *   Encode Message Digest with MD5
            *   @param origin information string
            *   @return message digest( in string ) or null
            */
           public static String encodeToStringWithMD5( String origin ) {
                  return encodeToString( origin, MDUtil.MD5);
           } 
          
           /**
            *    Encode Message Digest with SHA
            *    @param origin information string
            *    @return message digest( in string ) or null
            */
           public static String encodeToStringWithSHA( String origin ) {
                  return encodeToString( origin, MDUtil.SHA );
           }
          
           /**
            *     Check encode to ensure match of message digest
            *     @param origin information string
            *     @param mDigest digest information
            *     @param algorithm algorithm used in digest
            *     @return true if match, or else return false
            *     @exception NoSuchAlgorithmException throws when algorithm does not support.
            */
           public static boolean checkEncode( String origin, byte[] mDigest, String algorithm )
                  throws NoSuchAlgorithmException
           {
               MessageDigest md = MessageDigest.getInstance( algorithm );
               md.update( origin.getBytes());
               if( md.isEqual( mDigest, md.digest()) ) {
                    return true;
               } else {
                    return false;
               }  
           }  
          
           /**
            *    Check encode to ensure match of message digest encoded by MD5  
            *    @param origin information string
            *    @param mDigest digest information encoded by MD5
            *    @return true if match or else return false
            */
           public static boolean checkEncodeWithMD5( String origin, byte[] mDigest ) {
               try {
                    return checkEncode( origin, mDigest, MDUtil.MD5 );
               } catch ( NoSuchAlgorithmException ex ) {
                    return false;
               }
           }
          
           /**
            *     Check encode to ensure match of message digest encoded by SHA
            *     @param origin information string
            *     @param mDigest digest information encoded in SHA
            *     @return true if match or else return false
            */
           public static boolean checkEncodeWithSHA( String origin, byte[] mDigest ) {
               try {
                    return checkEncode( origin, mDigest, MDUtil.SHA );
               } catch ( NoSuchAlgorithmException ex ) {
                    return false;
               } 
           }
          
           // main
           // just for test.
           public static void main( String[] args ) {
                  System.out.println( encodeToStringWithMD5("quickpoint"));
                  System.out.println( encodeToStringWithSHA("quickpoint"));
                  try {
                    System.out.println( checkEncodeWithMD5( "quickpoint", encodeWithMD5("quickpoint")));
                    System.out.println( checkEncodeWithSHA( "quickpoint", encodeWithSHA("quickpoint")));
                  } catch ( NoSuchAlgorithmException ex ) {
                    ex.printStackTrace();
                  }   
            }
}

智慧旅游解决方案利用云计算、物联网和移动互联网技术,通过便携终端设备,实现对旅游资源、经济、活动和旅游者信息的智能感知和发布。这种技术的应用旨在提升游客在旅游各个环节的体验,使他们能够轻松获取信息、规划行程、预订票务和安排食宿。智慧旅游平台为旅游管理部门、企业和游客提供服务,包括政策发布、行政管理、景区安全、游客流量统计分析、投诉反馈等。此外,平台还提供广告促销、库存信息、景点介绍、电子门票、社交互动等功能。 智慧旅游的建设规划得到了国家政策的支持,如《国家中长期科技发展规划纲要》和国务院的《关于加快发展旅游业的意见》,这些政策强调了旅游信息服务平台的建设和信息化服务的重要性。随着技术的成熟和政策环境的优化,智慧旅游的时机已经到来。 智慧旅游平台采用SaaS、PaaS和IaaS等云服务模式,提供简化的软件开发、测试和部署环境,实现资源的按需配置和快速部署。这些服务模式支持旅游企业、消费者和管理部门开发高性能、高可扩展的应用服务。平台还整合了旅游信息资源,提供了丰富的旅游产品创意平台和统一的旅游综合信息库。 智慧旅游融合应用面向游客和景区景点主管机构,提供无线城市门户、智能导游、智能门票及优惠券、景区综合安防、车辆及停车场管理等服务。这些应用通过物联网和云计算技术,实现了旅游服务的智能化、个性化和协同化,提高了旅游服务的自由度和信息共享的动态性。 智慧旅游的发展标志着旅游信息化建设的智能化和应用多样化趋势,多种技术和应用交叉渗透至旅游行业的各个方面,预示着全面的智慧旅游时代已经到来。智慧旅游不仅提升了游客的旅游体验,也为旅游管理和服务提供了高效的技术支持。
智慧旅游解决方案利用云计算、物联网和移动互联网技术,通过便携终端设备,实现对旅游资源、经济、活动和旅游者信息的智能感知和发布。这种技术的应用旨在提升游客在旅游各个环节的体验,使他们能够轻松获取信息、规划行程、预订票务和安排食宿。智慧旅游平台为旅游管理部门、企业和游客提供服务,包括政策发布、行政管理、景区安全、游客流量统计分析、投诉反馈等。此外,平台还提供广告促销、库存信息、景点介绍、电子门票、社交互动等功能。 智慧旅游的建设规划得到了国家政策的支持,如《国家中长期科技发展规划纲要》和国务院的《关于加快发展旅游业的意见》,这些政策强调了旅游信息服务平台的建设和信息化服务的重要性。随着技术的成熟和政策环境的优化,智慧旅游的时机已经到来。 智慧旅游平台采用SaaS、PaaS和IaaS等云服务模式,提供简化的软件开发、测试和部署环境,实现资源的按需配置和快速部署。这些服务模式支持旅游企业、消费者和管理部门开发高性能、高可扩展的应用服务。平台还整合了旅游信息资源,提供了丰富的旅游产品创意平台和统一的旅游综合信息库。 智慧旅游融合应用面向游客和景区景点主管机构,提供无线城市门户、智能导游、智能门票及优惠券、景区综合安防、车辆及停车场管理等服务。这些应用通过物联网和云计算技术,实现了旅游服务的智能化、个性化和协同化,提高了旅游服务的自由度和信息共享的动态性。 智慧旅游的发展标志着旅游信息化建设的智能化和应用多样化趋势,多种技术和应用交叉渗透至旅游行业的各个方面,预示着全面的智慧旅游时代已经到来。智慧旅游不仅提升了游客的旅游体验,也为旅游管理和服务提供了高效的技术支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值