简单加密/解密方法包装, 含encode(),decode(),md5()

原创 2004年09月17日 15:24:00

简单加密/解密方法包装, 含encode(),decode(),md5() 
 发表日期:2004-07-30 作者:[转贴] 出处:  
 

 

package steeven;

/*
用途: 简单加密/解密方法包装
作者: steeven@kali.com.cn
日期: 12/05/2001
感谢: http://www-900.ibm.com/developerWorks/java/l-security/index.shtml

说明:
This Class need JCE, download here:
http://java.sun.com/security/index.html

*/

import java.security.*;
import javax.crypto.*;
public class Crypt {

  private static String Algorithm="DES"; //定义 加密算法,可用 DES,DESede,Blowfish

  static boolean debug = false;

  static{
    Security.addProvider(new com.sun.crypto.provider.SunJCE());
  }

  //生成密钥, 注意此步骤时间比较长
  public static byte[] getKey() throws Exception{
    KeyGenerator keygen = KeyGenerator.getInstance(Algorithm);
    SecretKey deskey = keygen.generateKey();
    if (debug)
      System.out.println("生成密钥:"+byte2hex(deskey.getEncoded()));
    return deskey.getEncoded();
  }

  //加密
  public static byte[] encode(byte[] input,byte[] key) throws Exception{
    SecretKey deskey = new javax.crypto.spec.SecretKeySpec(key,Algorithm);
    if (debug){
      System.out.println("加密前的二进串:"+byte2hex(input));
      System.out.println("加密前的字符串:"+new String(input));
    }
    Cipher c1 = Cipher.getInstance(Algorithm);
    c1.init(Cipher.ENCRYPT_MODE,deskey);
    byte[] cipherByte=c1.doFinal(input);
    if (debug)
      System.out.println("加密后的二进串:"+byte2hex(cipherByte));
    return cipherByte;
  }

  //解密
  public static byte[] decode(byte[] input,byte[] key) throws Exception{
    SecretKey deskey = new javax.crypto.spec.SecretKeySpec(key,Algorithm);
    if (debug)
      System.out.println("解密前的信息:"+byte2hex(input));
    Cipher c1 = Cipher.getInstance(Algorithm);
    c1.init(Cipher.DECRYPT_MODE,deskey);
    byte[] clearByte=c1.doFinal(input);
    if (debug){
      System.out.println("解密后的二进串:"+byte2hex(clearByte));
      System.out.println("解密后的字符串:"+(new String(clearByte)));
    }
    return clearByte;
  }

  //md5()信息摘要, 不可逆
  public static byte[] md5(byte[] input) throws Exception{
    java.security.MessageDigest alg=java.security.MessageDigest.getInstance("MD5"); //or "SHA-1"
    if (debug){
      System.out.println("摘要前的二进串:"+byte2hex(input));
      System.out.println("摘要前的字符串:"+new String(input));
    }
    alg.update(input);
    byte[] digest = alg.digest();
    if (debug)
      System.out.println("摘要后的二进串:"+byte2hex(digest));
    return digest;
  }

  //字节码转换成16进制字符串
  public static String byte2hex(byte[] b) {
    String hs="";
    String stmp="";
    for (int n=0;n      stmp=(java.lang.Integer.toHexString(b[n] & 0XFF));
      if (stmp.length()==1)
        hs=hs+"0"+stmp;
      else hs=hs+stmp;
        if (n      }
    return hs.toUpperCase();
  }

  public static void main(String[] args) throws Exception{
    debug = true;
//    byte[] key = getKey();
    byte[] key = "好好学习".getBytes();
    decode(encode("测试加密".getBytes(),key),key);
    md5("测试加密".getBytes());
  }
}

加密ENCODE或解密DECODE函数

/** * $string 明文或密文 * $operation 加密ENCODE或解密DECODE * $key 密钥 * $expiry 密钥有效期 */ functio...
  • u012408083
  • u012408083
  • 2016年06月16日 15:09
  • 1828

base64加密,解密,encode,decode,编码详解+实现

以下部分内容摘自wiki百科:http://zh.wikipedia.org/wiki/Base64 概述         Base64是一种基于64(A-Z、a-z、数字0-9 ,‘+’,‘/...
  • hherima
  • hherima
  • 2013年03月25日 17:48
  • 3698

iOS加密解密大全(MD5,SHA,Base64等)

iOS当中常用到各种加密解密,做了个整理,包含如下: Encrypt/Decrypt: AES. Hash: MD5, SHA(SHA1, SHA224, SHA256, SHA384, SHA512...
  • jueyi1127
  • jueyi1127
  • 2016年03月28日 18:12
  • 1215

Mysql 常用函数总结(加密解密函数)

MD5(str) md5加密SELECT MD5('hello') 5d41402abc4b2a76b9719d911017c592sha(str) sha加密SELECT SHA('hello') ...
  • qq_17612199
  • qq_17612199
  • 2016年10月08日 15:54
  • 11130

专家教你如何轻松解密Md5

Md5密文破解(解密)可以说是网络攻击中的一个必不可少的环节,是黑客工具中的一个重要“辅助工具”。md5解密主要用于网络攻击,在对网站等进行入侵过程,有可能获得管理员或者其他用户的账号和密码值(md5...
  • mydriverc2
  • mydriverc2
  • 2014年11月24日 10:51
  • 3431

C# 常用加密解密方法

字符串加密分可逆和不可逆加密两种,下面直接贴上代码 using System; using System.Collections.Generic; using System.Text; using...
  • zy332719794
  • zy332719794
  • 2014年12月03日 12:11
  • 2995

java代码实现加密解密(MD5签名(同步接口))

java代码实现对数据的加密,并实现数据加密后的解密,并进行签名操作
  • wwg2413980145
  • wwg2413980145
  • 2016年08月24日 16:11
  • 6677

【iOS】MD5(加密)/AES/Base64加密和解密

MD5 什么是MD5 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。MD5的典型应用是对一段信...
  • zhuming3834
  • zhuming3834
  • 2016年06月27日 20:53
  • 7576

Java字符串加密解密MD5

package com.fisee.utils; import java.io.IOException; import java.security.SecureRandom; import j...
  • vison155142
  • vison155142
  • 2016年11月11日 10:16
  • 6878

java编写encode方法和decode方法,机试题

请你用java,c,c++ 中任何一种语言实现两个函数encode()和decode(),分别实现对字符串的变换和复原。  变换函数encode()顺序考察以知字符串的字符,按以下规则逐组生成新字符串...
  • dreamkid0924
  • dreamkid0924
  • 2016年11月22日 13:36
  • 725
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:简单加密/解密方法包装, 含encode(),decode(),md5()
举报原因:
原因补充:

(最多只允许输入30个字)