zoukankan      html  css  js  c++  java
  • C# JAVA 通用 AES

    //程序集 IKVM.OpenJDK.Security
    using java.security;
    using javax.crypto;

    ///
    <summary> /// AES解密 /// </summary> /// <param name="content"></param> /// <param name="key"></param> /// <returns></returns> public static string JavaAESDecrypt(string content, string key) { KeyGenerator kgen = KeyGenerator.getInstance("AES"); SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG"); secureRandom.setSeed(Encoding.ASCII.GetBytes(key)); kgen.init(128, secureRandom); SecretKey secretKey = kgen.generateKey(); byte[] enCodeFormat = secretKey.getEncoded(); using (AesCryptoServiceProvider aesProvider = new AesCryptoServiceProvider()) { aesProvider.Key = enCodeFormat; aesProvider.Mode = CipherMode.ECB; aesProvider.Padding = PaddingMode.PKCS7; using (ICryptoTransform cryptoTransform = aesProvider.CreateDecryptor()) { byte[] inputBuffers = Convert.FromBase64String(content); byte[] results = cryptoTransform.TransformFinalBlock(inputBuffers, 0, inputBuffers.Length); aesProvider.Clear(); return Encoding.UTF8.GetString(results); } } } /// <summary> /// AES加密 /// </summary> /// <param name="content"></param> /// <param name="key"></param> /// <returns></returns> public static string JavaAESEncrypt(string content, string key) { KeyGenerator kgen = KeyGenerator.getInstance("AES"); SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG"); secureRandom.setSeed(Encoding.ASCII.GetBytes(key)); kgen.init(128, secureRandom); SecretKey secretKey = kgen.generateKey(); byte[] enCodeFormat = secretKey.getEncoded(); using (AesCryptoServiceProvider aesProvider = new AesCryptoServiceProvider()) { aesProvider.Key = enCodeFormat; aesProvider.Mode = CipherMode.ECB; aesProvider.Padding = PaddingMode.PKCS7; using (ICryptoTransform cryptoTransform = aesProvider.CreateEncryptor()) { byte[] inputBuffers = Encoding.UTF8.GetBytes(content); byte[] results = cryptoTransform.TransformFinalBlock(inputBuffers, 0, inputBuffers.Length); aesProvider.Clear(); return Convert.ToBase64String(results); } } }

    JAVA 如下:

    import org.apache.commons.codec.binary.Base64;
    import javax.crypto.Cipher;
    import javax.crypto.KeyGenerator;
    import javax.crypto.SecretKey;
    import javax.crypto.spec.SecretKeySpec;
    import java.security.NoSuchAlgorithmException;
    import java.security.SecureRandom;
    
    /**
     * @author dingyingsi
     */
    public class DigestUtils {
    
        private static final String KEY_ALGORITHM = "AES";
        private static final String DEFAULT_CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding";
    
        /**
         * AES 加密操作
         *
         * @param content  待加密内容
         * @param password 加密密码
         * @return 返回Base64转码后的加密数据
         */
        public static String encrypt(String content, String password) {
            try {
                Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM);// 创建密码器
                byte[] byteContent = content.getBytes("utf-8");
                cipher.init(Cipher.ENCRYPT_MODE, getSecretKey(password));// 初始化为加密模式的密码器
                byte[] result = cipher.doFinal(byteContent);// 加密
                return Base64.encodeBase64String(result);//通过Base64转码返回
            } catch (Exception ex) {
                ex.printStackTrace();
            }
            return null;
        }
    
        /**
         * AES 解密操作
         *
         * @param content
         * @param password
         * @return
         */
        public static String decrypt(String content, String password) {
            try {
    
                Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM);
    
                cipher.init(Cipher.DECRYPT_MODE, getSecretKey(password));
    
                byte[] result = cipher.doFinal(Base64.decodeBase64(content));
                return new String(result, "utf-8");
            } catch (Exception ex) {
                ex.printStackTrace();
            }
            return null;
        }
    
        private static SecretKeySpec getSecretKey(final String password) {
            KeyGenerator kg = null;
            try {
                kg = KeyGenerator.getInstance(KEY_ALGORITHM);
                SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
                random.setSeed(password.getBytes());
                kg.init(128, random);//AES 要求密钥长度为 128
                //生成一个密钥
                SecretKey secretKey = kg.generateKey();
                return new SecretKeySpec(secretKey.getEncoded(), KEY_ALGORITHM);
            } catch (NoSuchAlgorithmException ex) {
                ex.printStackTrace();
            }
            return null;
        }
    
        public static void main(String[] args) {
            //加密 将上传文件名加密
            String content = "test 加密数据";
            System.out.println(content);
            String key= "key_string";
            String code = encrypt(content, key);
            System.out.println(code);
    
            String decryptResult = decrypt(code, key);
            System.out.println(decryptResult);
        }
    }
    讓眾人的薪枝構起這團熱情的火焰
  • 相关阅读:
    我的第一个Django项目
    MVC和MTV设计模式
    Linux下安装MySQL
    UEditor演变的迷你版编辑器
    PHP+Mysql+jQuery实现文件下载次数统计
    PHP+JQUEY+AJAX实现分页
    PHP高手之路(一)
    nginx别名alias支持PHP fastcgi解析
    免费的FRP--windows 内网使用Argo Tunnel打洞到 Cloudflare
    拾得他人闲话 DNS 的牙慧
  • 原文地址:https://www.cnblogs.com/valeb/p/15166338.html
Copyright © 2011-2022 走看看