| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
vqfq6057
8年前发布

常用加解密工具类(MD5、SHA、DES、AES、RSA)

加解密工具类,实现了常用的加解密类。包括单向加密:MD5、SHA;对称加密:DES、AES;非对称加密:RSA
完整代码见:https://git.oschina.net/bayern.com/SecureUtils.git  同时提供ant打包脚本。
</div>

 

下面展示部分关键代码    

MD5 单向加密:   /**    * 返回MD5单向加密后的十六进制字符串    * @param data    * @return    * @throws Exception    */   public String getEncryptForHex(byte[] data) throws Exception   {    byte[] digestData = encrypt(data);    StringBuffer hex = new StringBuffer();    for(int i = 0; i < digestData.length; i++)    {     int h = ((int)digestData[i]) & 0XFF;     if(h < 16)     {      hex.append("0");     }     hex.append(Integer.toHexString(h));    }        return hex.toString();   }      DES 对称加密类:   @Override   public byte[] encrypt(byte[] data) throws Exception    {    if(secretKey == null || "".equals(secretKey))    {     throw new Exception("scretKey need to exists");    }        SecretKey md5Key = getKey(secretKey);    Cipher cipher = Cipher.getInstance(ALGORITHM);    cipher.init(Cipher.ENCRYPT_MODE, md5Key);    return cipher.doFinal(data);   }     @Override   public byte[] decrypt(byte[] data) throws Exception    {    if(secretKey == null || "".equals(secretKey))    {     throw new Exception("scretKey need to exists");    }        SecretKey md5Key = getKey(secretKey);    Cipher cipher = Cipher.getInstance(ALGORITHM);    cipher.init(Cipher.DECRYPT_MODE, md5Key);    return cipher.doFinal(data);   }        RSA 非对称加密。私钥加密 & 私钥解密 & 私钥签名   @Override   public byte[] encrypt(byte[] data) throws Exception    {    PrivateKey rsaPrivateKey = getRSAPrivateKey();    Cipher cipher = Cipher.getInstance(ALGORITHM);    cipher.init(Cipher.ENCRYPT_MODE, rsaPrivateKey);    return cipher.doFinal(data);   }     @Override   public byte[] decrypt(byte[] data) throws Exception    {    PrivateKey rsaPrivateKey = getRSAPrivateKey();    Cipher cipher = Cipher.getInstance(ALGORITHM);    cipher.init(Cipher.DECRYPT_MODE, rsaPrivateKey);    return cipher.update(data);   }            /**    * 使用私钥 对数据进行签名    * @param data    * @return    * @throws Exception    */   public String sign(byte[] data) throws Exception   {    PrivateKey rsaPrivateKey = getRSAPrivateKey();    Signature signature = Signature.getInstance(SIGN_ALGORITHM);    signature.initSign(rsaPrivateKey);    signature.update(data);    return encoder(signature.sign());   }    RSA 非对称加密。公钥加密 & 公钥解密 & 公钥校验签名   @Override   public byte[] encrypt(byte[] data) throws Exception   {    if(publicKey == null || "".equals(publicKey))    {     throw new Exception("publicKey is need exists");    }        PublicKey rsaPublicKey = getRSAPublicKey(publicKey);    Cipher cipher = Cipher.getInstance(ALGORITHM);    cipher.init(Cipher.ENCRYPT_MODE, rsaPublicKey);    return cipher.doFinal(data);   }     @Override   public byte[] decrypt(byte[] data) throws Exception   {    if(publicKey == null || "".equals(publicKey))    {     throw new Exception("publicKey is need exists");    }        PublicKey rsaPublicKey = getRSAPublicKey(publicKey);    Cipher cipher = Cipher.getInstance(ALGORITHM);    cipher.init(Cipher.DECRYPT_MODE, rsaPublicKey);    return cipher.doFinal(data);   }     /**    * 使用公钥校验签名    * @param data    * @param sign    * @return    * @throws Exception    */   public boolean verifySign(byte[] data, String sign) throws Exception   {    if(publicKey == null || "".equals(publicKey))    {     throw new Exception("publicKey is need exists");    }        PublicKey rsaPublicKey = getRSAPublicKey(publicKey);    Signature signature = Signature.getInstance(SIGN_ALGORITHM);    signature.initVerify(rsaPublicKey);    signature.update(data);    return signature.verify(decoder(sign));   }