加密解密工具类



加密解密测试工具

java版本

package xxx;
  
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
 
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.security.Key;
  
public class AESUtil {
 
    /**
     * 用来进行加密的操作
     *
     * @param data
     * @return
     * @throws Exception
     */
    public String encrypt(String data) throws Exception {
        Key key = new SecretKeySpec(keyValue, KEY_ALGORITHM);
        Cipher c = Cipher.getInstance(KEY_ALGORITHM);// 创建密码器
        c.init(Cipher.ENCRYPT_MODE, key);// 初始化
        byte[] encVal = c.doFinal(data.getBytes());
        return new BASE64Encoder().encode(encVal);
    }
 
    /**
     * 用来进行解密的操作
     *
     * @param encryptedData
     * @return
     * @throws Exception
     */
    public String decrypt(String encryptedData) throws Exception {
        Key key = new SecretKeySpec(keyValue, KEY_ALGORITHM);
        Cipher c = Cipher.getInstance(KEY_ALGORITHM);
        c.init(Cipher.DECRYPT_MODE, key);
        byte[] decordedValue = new BASE64Decoder().decodeBuffer(encryptedData);
        byte[] decValue = c.doFinal(decordedValue);
        return new String(decValue);
    }
 
 
    // 加密算法
    private String KEY_ALGORITHM =  "xxx";
 
    //加密密钥
    private static final byte[] keyValue =    "xxx".getBytes();
}

 C#版本

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.IO;
  
// 加密
public static string Encrypt(string toEncrypt, string key)
{
    byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
    byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);
    RijndaelManaged rDel = new RijndaelManaged();
    rDel.Key = keyArray;
    rDel.Mode = CipherMode.ECB;
    rDel.Padding = PaddingMode.PKCS7;
    ICryptoTransform cTransform = rDel.CreateEncryptor();
    byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
    return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}
  
// 解密
public static string Decrypt(string toDecrypt, string key)
{
    byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
    byte[] toEncryptArray = Convert.FromBase64String(toDecrypt);
    RijndaelManaged rDel = new RijndaelManaged();
    rDel.Key = keyArray;
    rDel.Mode = CipherMode.ECB;
    rDel.Padding = PaddingMode.PKCS7;
    ICryptoTransform cTransform = rDel.CreateDecryptor();
    byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
    return UTF8Encoding.UTF8.GetString(resultArray);
}


 php版本

  
// 加密
private function encrypt ($str)
{
    $size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_ECB);
    $pad = $size - (strlen($str) % $size);
    $str = $str . str_repeat(chr($pad), $pad);
    $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128,'',MCRYPT_MODE_ECB,'');
    $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
     mcrypt_generic_init ($td,'加密密钥(替换)', $iv);
    $cyper_text = mcrypt_generic($td, $str);
    $ret = base64_encode($cyper_text);
    mcrypt_generic_deinit ($td);
    mcrypt_module_close($td);
    return $ret ;
}
  
// 解密
private function  decrypt($str)
{
    $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128,'',MCRYPT_MODE_ECB,'');
    $iv mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
    mcrypt_generic_init($td,'加密密钥(替换)',$iv); 
    $b64 = base64_decode($str);
    $decrypted_text = mdecrypt_generic($td,$b64);
    $pad = ord($decrypted_text{strlen($decrypted_text) - 1});
    $ret = substr($decrypted_text, 0, -1 * $pad);
    mcrypt_generic_deinit($td);
    mcrypt_module_close($td);
    return $ret;
}
返回
顶部