继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Java实现SHA1加密与MD5 明文32加密

鬼球_
关注TA
已关注
手记 1
粉丝 15
获赞 97

MD5 和SHA-1 是目前使用比较广泛的散列(Hash)函数,也是在消息认证和数字签名中普遍使用的两种加密算法。本文基于AVR 高速嵌入式单片机,实现了MD5和SHA-1 两种加密算法的比较,并对算法进行了汇编语言的优化和改进。根据实验结果,对两种算法的优缺点进行了比较和分析。

由于MD5 与SHA-1均是从MD4 发展而来,它们的结构和强度等特性有很多相似之处,表(1)是对MD5 与SHA-1 的结构比较。SHA-1与MD5 的最大区别在于其摘要比MD5 摘要长 32 比特。对于强行攻击,产生任何一个报文使之摘要等于给定报文摘要的难度:MD5 是2128 数量级的操作,SHA-1 是2160 数量级的操作。产生具有相同摘要的两个报文的难度:MD5是 264 是数量级的操作,SHA-1 是280 数量级的操作。因而,SHA-1 对强行攻击的强度更大。但由于SHA-1 的循环步骤比MD5 多(80:64)且要处理的缓存大(160 比特:128 比特),SHA-1 的运行速度比MD5 慢。
/*

  • @param plainText
  • 明文
  • @return 32位密文
    */
    public String encryption(String plainText ) {
    String re_md5 = new String();
    try {
    MessageDigest md = MessageDigest.getInstance("MD5");
    md.update( plainText.getBytes());
    byte b [] = md .digest();

             int i ;
    
             StringBuffer buf = new StringBuffer();
             for (int offset = 0; offset < b .length ; offset++) {
                 i = b[ offset];
                 if (i < 0)
                     i += 256;
                 if (i < 16)
                     buf.append( "0");
                 buf.append(Integer. toHexString(i));
             }
    
             re_md5 = buf.toString();
    
         } catch (NoSuchAlgorithmException e ) {
             e.printStackTrace();
         }
         return re_md5 ;
     }
     /**
  • SHA加密
  • @param str
  • @return
    */
    public String getSha1(String str ) {
    if (str == null || str.length() == 0) {
    return null ;
    }
    char hexDigits [] = { '0' , '1' , '2' , '3' , '4', '5' , '6' , '7' , '8' , '9' ,
    'a', 'b', 'c', 'd', 'e', 'f' };

           try {
               MessageDigest mdTemp = MessageDigest.getInstance("SHA1");
                mdTemp.update( str.getBytes( "UTF-8"));
    
                byte[] md = mdTemp .digest();
                int j = md .length ;
                char buf [] = new char[ j * 2];
                int k = 0;
                for (int i = 0; i < j ; i ++) {
                     byte byte0 = md [i ];
                     buf[ k++] = hexDigits[byte0 >>> 4 & 0xf];
                     buf[ k++] = hexDigits[byte0 & 0xf];
               }
                return new String(buf );
          } catch (Exception e ) {
                return null ;
          }
      }
打开App,阅读手记
27人推荐
发表评论
随时随地看视频慕课网APP