精华内容
下载资源
问答
  • DES 数据加密

    2012-01-04 21:58:38
    基于网络安全,密码学方面的DES 数据加密
  • des数据加密

    2013-11-22 09:47:10
    加密一些数据的,代码注释写的详细,很容易看明白
  • DES数据加密

    2019-10-06 23:12:54
    //实例化支持DES算法的密钥生成器(算法名称命名需按规定,否则抛出异常) keygen = KeyGenerator.getInstance("DES"); //生成密钥 deskey = keygen.generateKey(); //生成Cipher对象,指定其支持的DES算法 ...
    package test;
    
    import java.security.InvalidKeyException;  
    import java.security.NoSuchAlgorithmException;  
    import java.security.Security;  
      
    import javax.crypto.BadPaddingException;  
    import javax.crypto.Cipher;  
    import javax.crypto.IllegalBlockSizeException;  
    import javax.crypto.KeyGenerator;  
    import javax.crypto.NoSuchPaddingException;  
    import javax.crypto.SecretKey;  
    //  DES
    public class EncrypDES {  
          
        //KeyGenerator 提供对称密钥生成器的功能,支持各种算法  
        private KeyGenerator keygen;  
        //SecretKey 负责保存对称密钥  
        private SecretKey deskey;  
        //Cipher负责完成加密或解密工作  
        private Cipher c;  
        //该字节数组负责保存加密的结果  
        private byte[] cipherByte;  
          
        public EncrypDES() throws NoSuchAlgorithmException, NoSuchPaddingException{  
            Security.addProvider(new com.sun.crypto.provider.SunJCE());  
            //实例化支持DES算法的密钥生成器(算法名称命名需按规定,否则抛出异常)  
            keygen = KeyGenerator.getInstance("DES");  
            //生成密钥  
            deskey = keygen.generateKey();  
            //生成Cipher对象,指定其支持的DES算法  
            c = Cipher.getInstance("DES");  
        }  
          
        /** 
         * 对字符串加密 
         *  
         * @param str 
         * @return 
         * @throws InvalidKeyException 
         * @throws IllegalBlockSizeException 
         * @throws BadPaddingException 
         */  
        public byte[] Encrytor(String str) throws InvalidKeyException,  
                IllegalBlockSizeException, BadPaddingException {  
            // 根据密钥,对Cipher对象进行初始化,ENCRYPT_MODE表示加密模式  
            c.init(Cipher.ENCRYPT_MODE, deskey);  
            byte[] src = str.getBytes();  
            // 加密,结果保存进cipherByte  
            cipherByte = c.doFinal(src);  
            return cipherByte;  
        }  
      
        /** 
         * 对字符串解密 
         *  
         * @param buff 
         * @return 
         * @throws InvalidKeyException 
         * @throws IllegalBlockSizeException 
         * @throws BadPaddingException 
         */  
        public byte[] Decryptor(byte[] buff) throws InvalidKeyException,  
                IllegalBlockSizeException, BadPaddingException {  
             // 根据密钥,对Cipher对象进行初始化,DECRYPT_MODE表示加密模式  
            c.init(Cipher.DECRYPT_MODE, deskey);  
            cipherByte = c.doFinal(buff);  
            return cipherByte;  
        }  
      
        public static void main(String[] args) throws Exception {  
            EncrypDES de1 = new EncrypDES();  
            String msg ="郭XX-搞笑相声全集";  
            byte[] encontent = de1.Encrytor(msg);  
            byte[] decontent = de1.Decryptor(encontent);  
            System.out.println("明文是:" + msg);  
            System.out.println("加密后:" + new String(encontent));  
            System.out.println("解密后:" + new String(decontent));  
        }  
      
    }  
    

      

    转载于:https://www.cnblogs.com/Nbge/archive/2012/11/26/2789376.html

    展开全文
  • DES数据加密算法

    2011-11-11 13:26:04
    DES数据加密算法,VC实验,含实验源码。
  • DES数据加密算法,网络安全中较为基础的算法之一,用于学习交流使用
  • DES数据加密的FPGA实现

    2012-04-04 15:44:25
    DES数据加密的 FPGA实现
  • 浅析DES数据加密算法

    2011-04-10 20:53:32
    浅析DES数据加密算法,详细介绍它的理论
  • DES数据加密 解密

    2018-01-24 14:12:00
    /// <summary> /// DES数据加密 /// </summary> /// <param name="targetValue">目标值</param> /// <param name="key">密钥</param> /// <retu...

    /// <summary>
    /// DES数据加密
    /// </summary>
    /// <param name="targetValue">目标值</param>
    /// <param name="key">密钥</param>
    /// <returns>加密值</returns>
    public static string Encrypt(string targetValue, string key)
    {
    if (string.IsNullOrEmpty(targetValue))
    {
    return string.Empty;
    }

    var returnValue = new StringBuilder();
    var des = new DESCryptoServiceProvider();
    byte[] inputByteArray = Encoding.Default.GetBytes(targetValue);
    // 通过两次哈希密码设置对称算法的初始化向量
    des.Key = Encoding.ASCII.GetBytes(FormsAuthentication.HashPasswordForStoringInConfigFile
    (FormsAuthentication.HashPasswordForStoringInConfigFile(key, "md5").
    Substring(0, 8), "sha1").Substring(0, 8));
    // 通过两次哈希密码设置算法的机密密钥
    des.IV = Encoding.ASCII.GetBytes(FormsAuthentication.HashPasswordForStoringInConfigFile
    (FormsAuthentication.HashPasswordForStoringInConfigFile(key, "md5")
    .Substring(0, 8), "md5").Substring(0, 8));
    var ms = new MemoryStream();
    var cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
    cs.Write(inputByteArray, 0, inputByteArray.Length);
    cs.FlushFinalBlock();
    foreach (byte b in ms.ToArray())
    {
    returnValue.AppendFormat("{0:X2}", b);
    }
    return returnValue.ToString();
    }
    /// <summary>
    /// DES数据解密
    /// </summary>
    /// <param name="targetValue"></param>
    /// <param name="key"></param>
    /// <returns></returns>
    public static string Decrypt(string targetValue, string key)
    {
    if (string.IsNullOrEmpty(targetValue))
    {
    return string.Empty;
    }
    // 定义DES加密对象
    var des = new DESCryptoServiceProvider();
    int len = targetValue.Length / 2;
    var inputByteArray = new byte[len];
    int x, i;
    for (x = 0; x < len; x++)
    {
    i = Convert.ToInt32(targetValue.Substring(x * 2, 2), 16);
    inputByteArray[x] = (byte)i;
    }
    // 通过两次哈希密码设置对称算法的初始化向量
    des.Key = Encoding.ASCII.GetBytes(FormsAuthentication.HashPasswordForStoringInConfigFile
    (FormsAuthentication.HashPasswordForStoringInConfigFile(key, "md5").
    Substring(0, 8), "sha1").Substring(0, 8));
    // 通过两次哈希密码设置算法的机密密钥
    des.IV = Encoding.ASCII.GetBytes(FormsAuthentication.HashPasswordForStoringInConfigFile
    (FormsAuthentication.HashPasswordForStoringInConfigFile(key, "md5")
    .Substring(0, 8), "md5").Substring(0, 8));
    // 定义内存流
    var ms = new MemoryStream();
    // 定义加密流
    var cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
    cs.Write(inputByteArray, 0, inputByteArray.Length);
    cs.FlushFinalBlock();
    return Encoding.Default.GetString(ms.ToArray());
    }

    转载于:https://www.cnblogs.com/quhongyue/p/8341393.html

    展开全文
  • DES数据加密算法 加密算法源代码

    热门讨论 2009-05-07 10:50:02
    DES数据加密算法 加密算法源代码,信息安全专业课程设计
  • DES数据加密采用对称加密,进行加密,在c#中封装了对应的算法类DESCryptoServiceProvider。 DESCryptoServiceProvider:定义访问数据加密标准 (DES) 算法的加密服务提供程序 (CSP) 版本的包装对象。无法继承此类。 ...

    DES数据加密采用对称加密,进行加密,在c#中封装了对应的算法类DESCryptoServiceProvider。

    DESCryptoServiceProvider:定义访问数据加密标准 (DES) 算法的加密服务提供程序 (CSP) 版本的包装对象。无法继承此类。

    命名空间:System.Security.Cryptography
    程序集:mscorlib(在 mscorlib.dll 中)

      1  /// <summary>
      2     /// 数据加密 采用DES[数据对称加密]进行数据加密
      3     /// </summary>
      4     public sealed class MyEncrpt
      5     {
      6         static byte[] Keys;
      7 
      8         /// <summary>
      9         /// 构造函数
     10         /// </summary>
     11         static MyEncrpt()
     12         {
     13             string str="hedongsong123456";
     14             Keys = Encoding.UTF8.GetBytes(str.Substring(0, 8));
     15         }
     16         /// <summary>
     17         /// 对字符串进行加密
     18         /// </summary>
     19         /// <param name="sourceString"></param>
     20         /// <param name="key"></param>
     21         /// <returns></returns>
     22         public static string Encrypt(string sourceString, string key)
     23         {
     24             byte[] btKey = Encoding.UTF8.GetBytes(key.Substring(0, 8));
     25             byte[] btIv = Keys;
     26             DESCryptoServiceProvider des = new DESCryptoServiceProvider();
     27             using (MemoryStream ms = new MemoryStream())
     28             {
     29                 byte[] inData = Encoding.UTF8.GetBytes(sourceString);
     30                 try
     31                 {
     32                     using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(btKey, btIv), CryptoStreamMode.Write))
     33                     {
     34                         cs.Write(inData, 0, inData.Length);
     35                         cs.FlushFinalBlock();
     36                     }
     37                     return Convert.ToBase64String(ms.ToArray());
     38                 }
     39                 catch (Exception e)
     40                 {
     41                     throw e;
     42                 }
     43             }
     44         }
     45 
     46         /// <summary>
     47         /// 对文件进行加密
     48         /// </summary>
     49         /// <param name="sourceFile"></param>
     50         /// <param name="encryptedFile"></param>
     51         /// <param name="key"></param>
     52         public static void Encrypt(string sourceFile,string encryptedFile,string key)
     53         {
     54             byte[] btKey = Encoding.UTF8.GetBytes(key.Substring(0, 8));
     55             byte[] btIv = Keys;
     56             DESCryptoServiceProvider des = new DESCryptoServiceProvider();
     57             FileStream soufs = new FileStream(sourceFile, FileMode.Open, FileAccess.Read);
     58             FileStream encfs = new FileStream(encryptedFile,FileMode.Create,FileAccess.Write);
     59             byte[] btSou=new byte[soufs.Length];
     60             soufs.Read(btSou,0,btSou.Length);
     61             using(CryptoStream cs=new CryptoStream(encfs,des.CreateEncryptor(btKey,btIv),CryptoStreamMode.Write))
     62             {
     63                 cs.Write(btSou, 0, btSou.Length);
     64                 cs.FlushFinalBlock();
     65             }
     66             soufs.Close();
     67             soufs.Dispose();
     68             encfs.Close();
     69             encfs.Dispose();
     70         }
     71         
     72         /// <summary>
     73         /// 对字符串进行解密
     74         /// </summary>
     75         /// <param name="encryptedString"></param>
     76         /// <param name="key"></param>
     77         /// <returns></returns>
     78         public static string Decrypt(string encryptedString, string key)
     79         {
     80             byte[] btKey = Encoding.UTF8.GetBytes(key.Substring(0, 8));
     81             byte[] btIv = Keys;
     82             DESCryptoServiceProvider des = new DESCryptoServiceProvider();
     83             using (MemoryStream ms = new MemoryStream())
     84             {
     85                 byte[] inData = Convert.FromBase64String(encryptedString);
     86                 try
     87                 {
     88                     using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(btKey, btIv), CryptoStreamMode.Write))
     89                     {
     90                         cs.Write(inData, 0, inData.Length);
     91                         cs.FlushFinalBlock();
     92                     }
     93                     System.Text.Encoding encoding = new System.Text.UTF8Encoding();
     94                     return encoding.GetString(ms.ToArray());
     95                 }
     96                 catch (Exception e)
     97                 {
     98                     throw e;
     99                 }
    100             }
    101         }
    102 
    103         /// <summary>
    104         /// 对文件进行解密
    105         /// </summary>
    106         /// <param name="sourceFile"></param>
    107         /// <param name="encryptedFile"></param>
    108         /// <param name="key"></param>
    109         public static void Decrypt(string sourceFile, string encryptedFile, string key)
    110         {
    111             byte[] btKey = Encoding.UTF8.GetBytes(key.Substring(0, 8));
    112             byte[] btIv = Keys;
    113             DESCryptoServiceProvider des = new DESCryptoServiceProvider();
    114             FileStream soufs = new FileStream(sourceFile, FileMode.Open, FileAccess.Read);
    115             FileStream encfs = new FileStream(encryptedFile, FileMode.Create, FileAccess.Write);
    116             byte[] btSou = new byte[soufs.Length];
    117             soufs.Read(btSou, 0, btSou.Length);
    118             using (CryptoStream cs = new CryptoStream(encfs, des.CreateDecryptor(btKey, btIv), CryptoStreamMode.Write))
    119             {
    120                 cs.Write(btSou, 0, btSou.Length);
    121                 cs.FlushFinalBlock();
    122             }
    123             soufs.Close();
    124             soufs.Dispose();
    125             encfs.Close();
    126             encfs.Dispose();
    127         }
    128     }
    View Code

    DES采用密匙和对称向量进行加密和解密

    业务使用情况:用于对敏感数据进行加密,防止数据泄密。

    MSDN

     

    转载于:https://www.cnblogs.com/hedongsong/p/4539900.html

    展开全文
  • DES数据加密C++程序

    2009-06-10 16:40:55
    本程序是用c++来实现DES数据加密的程序,这是我做毕业设计的结果,上传上来给大家分享一下。
  • 自制基于基于web的DES数据加密类EncryptHelper.可自定义密钥.
  • DES数据加密算法的研究及其matlab实现,包含加密原理、设计思路、程序主体。
  • Android DES数据加密

    千次阅读 2017-04-11 14:33:40
    DES加密介绍: DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。DES加密算法出自IBM的研究, 后来被美国政府正式采用,之后开始广泛流传,但是近些年使用越来越少,因为DES使用56位密钥...

    DES加密介绍:

     DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。DES加密算法出自IBM的研究,后来被美国政府正式采用,之后开始广泛流传,但是近些年使用越来越少,因为DES使用56位密钥,以现代计算能力,24小时内即可被破解。
    

    DES加密使用方式:

    1.)DesUtil常量类介绍

       private final static String HEX = "0123456789ABCDEF";
       private final static String TRANSFORMATION = "DES/CBC/PKCS5Padding";//DES是加密方式 CBC是工作模式 PKCS5Padding是填充模式
       private final static String IVPARAMETERSPEC = "01020304";初始化向量参数,AES 为16bytes. DES 为8bytes.
       private final static String ALGORITHM = "DES";//DES是加密方式
       private static final String SHA1PRNG = "SHA1PRNG"; SHA1PRNG 强随机种子算法, 要区别4.2以上版本的调用方法

    1.)动态生成秘钥

    长度不能够小于8位字节 因为DES固定格式为128bits,即8bytes。

        /*
     * 生成随机数,可以当做动态的密钥 加密和解密的密钥必须一致,不然将不能解密
     */
        public static String generateKey() {
            try {
                SecureRandom localSecureRandom = SecureRandom.getInstance(SHA1PRNG);
                byte[] bytes_key = new byte[20];
                localSecureRandom.nextBytes(bytes_key);
                String str_key = toHex(bytes_key);
                return str_key;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    
        //二进制转字符
        public static String toHex(byte[] buf) {
            if (buf == null)
                return "";
            StringBuffer result = new StringBuffer(2 * buf.length);
            for (int i = 0; i < buf.length; i++) {
                appendHex(result, buf[i]);
            }
            return result.toString();
        }
    
        private static void appendHex(StringBuffer sb, byte b) {
            sb.append(HEX.charAt((b >> 4) & 0x0f)).append(HEX.charAt(b & 0x0f));
        }
    

    3.)处理秘钥Key的两种方式

    第一种:

        // 对密钥进行处理
        private static Key getRawKey(String key) throws Exception {
            KeyGenerator kgen = KeyGenerator.getInstance(ALGORITHM);
            //for android
            SecureRandom sr = null;
            // 在4.2以上版本中,SecureRandom获取方式发生了改变
            if (android.os.Build.VERSION.SDK_INT >= 17) {
                sr = SecureRandom.getInstance(SHA1PRNG, "Crypto");
            } else {
                sr = SecureRandom.getInstance(SHA1PRNG);
            }
            // for Java
            // secureRandom = SecureRandom.getInstance(SHA1PRNG);
            sr.setSeed(key.getBytes());
            kgen.init(64, sr); //DES固定格式为64bits,即8bytes。
            SecretKey skey = kgen.generateKey();
            byte[] raw = skey.getEncoded();
            return new SecretKeySpec(raw, ALGORITHM);
        }

    第二种:

        // 对密钥进行处理
        private static Key getRawKey(String key) throws Exception {
            DESKeySpec dks = new DESKeySpec(key.getBytes());
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(ALGORITHM);
            return keyFactory.generateSecret(dks);
        }

    4.)加密实现

     /**
         * DES算法,加密
         *
         * @param data 待加密字符串
         * @param key  加密私钥,长度不能够小于8位
         * @return 加密后的字节数组,一般结合Base64编码使用
         */
        public static String encode(String key, String data) {
            return encode(key, data.getBytes());
        }
    
    
        /**
         * DES算法,加密
         *
         * @param data 待加密字符串
         * @param key  加密私钥,长度不能够小于8位
         * @return 加密后的字节数组,一般结合Base64编码使用
         */
        public static String encode(String key, byte[] data) {
            try {
                Cipher cipher = Cipher.getInstance(TRANSFORMATION);
                IvParameterSpec iv = new IvParameterSpec(IVPARAMETERSPEC.getBytes());
                cipher.init(Cipher.ENCRYPT_MODE, getRawKey(key), iv);
                byte[] bytes = cipher.doFinal(data);
                return Base64.encodeToString(bytes, Base64.DEFAULT);
            } catch (Exception e) {
                return null;
            }
        }
    

    5.)解密实现

    
        /**
         * 获取编码后的值
         *
         * @param key
         * @param data
         * @return
         */
        public static String decode(String key, String data) {
            return decode(key, Base64.decode(data, Base64.DEFAULT));
        }
    
        /**
         * DES算法,解密
         *
         * @param data 待解密字符串
         * @param key  解密私钥,长度不能够小于8位
         * @return 解密后的字节数组
         */
        public static String decode(String key, byte[] data) {
            try {
                Cipher cipher = Cipher.getInstance(TRANSFORMATION);
                IvParameterSpec iv = new IvParameterSpec(IVPARAMETERSPEC.getBytes());
                cipher.init(Cipher.DECRYPT_MODE, getRawKey(key), iv);
                byte[] original = cipher.doFinal(data);
                String originalString = new String(original);
                return originalString;
            } catch (Exception e) {
                return null;
            }
        }

    DES知识扩展:3DES

     3DES是DES加密算法的一种模式,它使用3条64位的密钥对数据进行三次加密。数据加密标准(DES)是美国的一种由来已久的加密标准,它使用对称密钥加密法。3DES(即Triple DES)是DES向AES过渡的加密算法(1999年,NIST将3-DES指定为过渡的加密标准),是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法。
    

    DES与AES比较:

      当时被问起采用DES加密内心深处我是拒绝的。单纯从名字上看AES(Advanced Encryption Standard)高级加密标准,安全性要高于DES,其实AES的出现本身就是为了取代DES的,AES具有比DES更好的安全性、效率、灵活性,所以对称加密优先采用AES。
    
    展开全文
  • DES数据加密标准---初步了解

    千次阅读 2013-05-29 21:53:55
    DES数据加密标准 数据加密标准(DES)是一种使用密钥加密的块密码。它是基于使用56位密钥的对称算法。DES现在已经不是一种安全的加密方法,主要因为它使用的56为密钥过短。为了提供实用所需的安全性,可以使用DES的...
  • 接下来我们介绍对称加密算法,最常用的莫过于DES数据加密算法。  DES  DES-Data Encryption Standard,即数据加密算法。是IBM公司于1975年研究成功并公开发表的。DES算法的入口参数有三个:Key、Data、Mode。其中...
  • DES 数据加密标准 结构详解

    千次阅读 2017-09-26 02:01:08
    Data Encryption Standard,又称数据加密标准,是一种对称加密算法,也是密码学摆脱古典流加密后最简单的一种块加密算法。由于香农与1949年提出“完善保密性”,该标准要求密钥长度不短于明文长度,实际操作难以达到...
  • 利用DES算法实现对64位字符的加解密。
  • 接下来我们介绍对称加密算法,最常用的莫过于DES数据加密算法。  DES  DES-Data Encryption Standard,即数据加密算法。是IBM公司于1975年研究成功并公开发表的。DES算法的入口参数有三个:Key、Data、Mode。其中...
  • DES数据加密标准)算法】探索子密钥K1,K2,…,K16产生方法 DES算法为密码体制中的对称密码体制,明文按64位进行分组,密钥长64位,(事实上是56位有效密钥,第8,16,24,32,40,48,56,64位是校验位)。分组后...
  • java实现DES数据加密与解密

    千次阅读 2017-09-06 12:17:59
    DES加密原理 DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,448
精华内容 2,179
关键字:

des数据加密