精华内容
下载资源
问答
  • 后来和朋友交流了下数据交互 突然发现了数据加密的重要性 ,决定自己来写一篇关于非对称加密的文章 附上代码 看看怎么一步一步的实现rsa加密的 1、需要引入的包 import java.security.KeyPair; import java....

    今天看了一下RSA非对称加密算法  上网搜索了许多资料 都没有找到比较详细的讲解和实现代码 


    后来和朋友交流了下数据交互 突然发现了数据加密的重要性 ,决定自己来写一篇关于非对称加密的文章 附上代码 看看怎么一步一步的实现rsa加密的


    1、需要引入的包


    import java.security.KeyPair;
    import java.security.KeyPairGenerator;
    import java.security.PrivateKey;
    import java.security.PublicKey;
    import java.util.Date;
    import java.util.concurrent.ExecutionException;
    
    import javax.crypto.Cipher;
    import javax.xml.crypto.Data;
    
    import sun.misc.BASE64Encoder;
    

    2、编写Rsa类

    public class Rsa {
    	
    	
    }

    3、写入rsa算法需要的方法

    public class Rsa {
        //生成密钥对  
        public static KeyPair genKeyPair(int keyLength) throws Exception{  
            KeyPairGenerator keyPairGenerator=KeyPairGenerator.getInstance("RSA");  
            keyPairGenerator.initialize(1024);        
            return keyPairGenerator.generateKeyPair();  
        }  
          
        //公钥加密  
        public static byte[] encrypt(byte[] content, PrivateKey publicKey) throws Exception{  
            Cipher cipher=Cipher.getInstance("RSA");//java默认"RSA"="RSA/ECB/PKCS1Padding"  
            cipher.init(Cipher.ENCRYPT_MODE, publicKey);  
            return cipher.doFinal(content);  
        }  
          
        //私钥解密  
        public static byte[] decrypt(byte[] content, PublicKey privateKey) throws Exception{  
            Cipher cipher=Cipher.getInstance("RSA");  
            cipher.init(Cipher.DECRYPT_MODE, privateKey);  
            return cipher.doFinal(content);  
        }  
    	
    }

    4、方法有了之后就可以开始进行操作打了 首先要有个概念 公匙加密 私匙解密 或者 私匙加密 公匙解密

    首先准备一个需要加密的数据

        public static String data="{date:'hellow',time:'2017-10-29'}";

    5、有了数据之后准备公钥秘钥

    //公钥秘钥
    		PublicKey publicKEY =keyPair.getPublic();
    		PrivateKey privateKey =keyPair.getPrivate();


    6、有了公钥秘钥之后就可以进行加密解密了
    //公钥加密
    		byte[] dataCode = encrypt(data.getBytes(),publicKEY);
    		System.out.println(base64.encode(dataCode));


    //秘钥解密
    		byte[] dateprivate =decrypt(dataCode,privateKey);
    		System.out.println(new String(dateprivate));


    7、附上完整代码

    import java.security.KeyPair;
    import java.security.KeyPairGenerator;
    import java.security.PrivateKey;
    import java.security.PublicKey;
    import java.util.Date;
    import java.util.concurrent.ExecutionException;
    
    import javax.crypto.Cipher;
    import javax.xml.crypto.Data;
    
    import sun.misc.BASE64Encoder;
    
    
    public class Rsa {
    	
    	public static String data="{date:'hellow',time:'2017-10-29'}";  
    
    	
    	public static void main(String[] args) throws Exception {
    		//base64编码对象
    		final BASE64Encoder base64 =new BASE64Encoder();
    		KeyPair keyPair=genKeyPair(1024);
    		
    		//公钥秘钥
    		PublicKey publicKEY =keyPair.getPublic();
    		PrivateKey privateKey =keyPair.getPrivate();
    		
    		//公钥加密
    		byte[] dataCode = encrypt(data.getBytes(),publicKEY);
    		System.out.println(base64.encode(dataCode));
    		System.out.println("");
    		
    		//秘钥解密
    		byte[] dateprivate =decrypt(dataCode,privateKey);
    		System.out.println(new String(dateprivate));
    		
    		
    	}
    
    	
    	//生成密钥对  
        public static KeyPair genKeyPair(int keyLength) throws Exception{  
            KeyPairGenerator keyPairGenerator=KeyPairGenerator.getInstance("RSA");  
            keyPairGenerator.initialize(1024);        
            return keyPairGenerator.generateKeyPair();  
        }  
          
        //公钥加密  
        public static byte[] encrypt(byte[] content, PublicKey publicKey) throws Exception{  
            Cipher cipher=Cipher.getInstance("RSA");//java默认"RSA"="RSA/ECB/PKCS1Padding"  
            cipher.init(Cipher.ENCRYPT_MODE, publicKey);  
            return cipher.doFinal(content);  
        }  
          
        //私钥解密  
        public static byte[] decrypt(byte[] content, PrivateKey privateKey) throws Exception{  
            Cipher cipher=Cipher.getInstance("RSA");  
            cipher.init(Cipher.DECRYPT_MODE, privateKey);  
            return cipher.doFinal(content);  
        }  
    }
    


    8、运行结果



    
    
    展开全文
  • 接下来我们介绍对称加密算法,最常用的莫过于DES数据加密算法。  DES  DES-Data Encryption Standard,即数据加密算法。是IBM公司于1975年研究成功并公开发表的。DES算法的入口参数有三个:Key、Data、Mode。其中...
    接下来我们介绍对称加密算法,最常用的莫过于DES数据加密算法。 
    DES 
    DES-Data Encryption Standard,即数据加密算法。是IBM公司于1975年研究成功并公开发表的。DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。 
      DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位。 

     

    通过java代码实现如下:Coder类见 Java加密技术(一) 
    Java代码  收藏代码
    1. import java.security.Key;  
    2. import java.security.SecureRandom;  
    3.   
    4. import javax.crypto.Cipher;  
    5. import javax.crypto.KeyGenerator;  
    6. import javax.crypto.SecretKey;  
    7. import javax.crypto.SecretKeyFactory;  
    8. import javax.crypto.spec.DESKeySpec;  
    9.   
    10.   
    11. /** 
    12.  * DES安全编码组件 
    13.  *  
    14.  * <pre> 
    15.  * 支持 DES、DESede(TripleDES,就是3DES)、AES、Blowfish、RC2、RC4(ARCFOUR) 
    16.  * DES                  key size must be equal to 56 
    17.  * DESede(TripleDES)    key size must be equal to 112 or 168 
    18.  * AES                  key size must be equal to 128, 192 or 256,but 192 and 256 bits may not be available 
    19.  * Blowfish             key size must be multiple of 8, and can only range from 32 to 448 (inclusive) 
    20.  * RC2                  key size must be between 40 and 1024 bits 
    21.  * RC4(ARCFOUR)         key size must be between 40 and 1024 bits 
    22.  * 具体内容 需要关注 JDK Document http://.../docs/technotes/guides/security/SunProviders.html 
    23.  * </pre> 
    24.  *  
    25.  * @author 梁栋 
    26.  * @version 1.0 
    27.  * @since 1.0 
    28.  */  
    29. public abstract class DESCoder extends Coder {  
    30.     /** 
    31.      * ALGORITHM 算法 <br> 
    32.      * 可替换为以下任意一种算法,同时key值的size相应改变。 
    33.      *  
    34.      * <pre> 
    35.      * DES                  key size must be equal to 56 
    36.      * DESede(TripleDES)    key size must be equal to 112 or 168 
    37.      * AES                  key size must be equal to 128, 192 or 256,but 192 and 256 bits may not be available 
    38.      * Blowfish             key size must be multiple of 8, and can only range from 32 to 448 (inclusive) 
    39.      * RC2                  key size must be between 40 and 1024 bits 
    40.      * RC4(ARCFOUR)         key size must be between 40 and 1024 bits 
    41.      * </pre> 
    42.      *  
    43.      * 在Key toKey(byte[] key)方法中使用下述代码 
    44.      * <code>SecretKey secretKey = new SecretKeySpec(key, ALGORITHM);</code> 替换 
    45.      * <code> 
    46.      * DESKeySpec dks = new DESKeySpec(key); 
    47.      * SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(ALGORITHM); 
    48.      * SecretKey secretKey = keyFactory.generateSecret(dks); 
    49.      * </code> 
    50.      */  
    51.     public static final String ALGORITHM = "DES";  
    52.   
    53.     /** 
    54.      * 转换密钥<br> 
    55.      *  
    56.      * @param key 
    57.      * @return 
    58.      * @throws Exception 
    59.      */  
    60.     private static Key toKey(byte[] key) throws Exception {  
    61.         DESKeySpec dks = new DESKeySpec(key);  
    62.         SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(ALGORITHM);  
    63.         SecretKey secretKey = keyFactory.generateSecret(dks);  
    64.   
    65.         // 当使用其他对称加密算法时,如AES、Blowfish等算法时,用下述代码替换上述三行代码  
    66.         // SecretKey secretKey = new SecretKeySpec(key, ALGORITHM);  
    67.   
    68.         return secretKey;  
    69.     }  
    70.   
    71.     /** 
    72.      * 解密 
    73.      *  
    74.      * @param data 
    75.      * @param key 
    76.      * @return 
    77.      * @throws Exception 
    78.      */  
    79.     public static byte[] decrypt(byte[] data, String key) throws Exception {  
    80.         Key k = toKey(decryptBASE64(key));  
    81.   
    82.         Cipher cipher = Cipher.getInstance(ALGORITHM);  
    83.         cipher.init(Cipher.DECRYPT_MODE, k);  
    84.   
    85.         return cipher.doFinal(data);  
    86.     }  
    87.   
    88.     /** 
    89.      * 加密 
    90.      *  
    91.      * @param data 
    92.      * @param key 
    93.      * @return 
    94.      * @throws Exception 
    95.      */  
    96.     public static byte[] encrypt(byte[] data, String key) throws Exception {  
    97.         Key k = toKey(decryptBASE64(key));  
    98.         Cipher cipher = Cipher.getInstance(ALGORITHM);  
    99.         cipher.init(Cipher.ENCRYPT_MODE, k);  
    100.   
    101.         return cipher.doFinal(data);  
    102.     }  
    103.   
    104.     /** 
    105.      * 生成密钥 
    106.      *  
    107.      * @return 
    108.      * @throws Exception 
    109.      */  
    110.     public static String initKey() throws Exception {  
    111.         return initKey(null);  
    112.     }  
    113.   
    114.     /** 
    115.      * 生成密钥 
    116.      *  
    117.      * @param seed 
    118.      * @return 
    119.      * @throws Exception 
    120.      */  
    121.     public static String initKey(String seed) throws Exception {  
    122.         SecureRandom secureRandom = null;  
    123.   
    124.         if (seed != null) {  
    125.             secureRandom = new SecureRandom(decryptBASE64(seed));  
    126.         } else {  
    127.             secureRandom = new SecureRandom();  
    128.         }  
    129.   
    130.         KeyGenerator kg = KeyGenerator.getInstance(ALGORITHM);  
    131.         kg.init(secureRandom);  
    132.   
    133.         SecretKey secretKey = kg.generateKey();  
    134.   
    135.         return encryptBASE64(secretKey.getEncoded());  
    136.     }  
    137. }  

    延续上一个类的实现,我们通过MD5以及SHA对字符串加密生成密钥,这是比较常见的密钥生成方式。 
    再给出一个测试类: 
    Java代码  收藏代码
    1. import static org.junit.Assert.*;  
    2.   
    3.   
    4. import org.junit.Test;  
    5.   
    6. /** 
    7.  *  
    8.  * @author 梁栋 
    9.  * @version 1.0 
    10.  * @since 1.0 
    11.  */  
    12. public class DESCoderTest {  
    13.   
    14.     @Test  
    15.     public void test() throws Exception {  
    16.         String inputStr = "DES";  
    17.         String key = DESCoder.initKey();  
    18.         System.err.println("原文:\t" + inputStr);  
    19.   
    20.         System.err.println("密钥:\t" + key);  
    21.   
    22.         byte[] inputData = inputStr.getBytes();  
    23.         inputData = DESCoder.encrypt(inputData, key);  
    24.   
    25.         System.err.println("加密后:\t" + DESCoder.encryptBASE64(inputData));  
    26.   
    27.         byte[] outputData = DESCoder.decrypt(inputData, key);  
    28.         String outputStr = new String(outputData);  
    29.   
    30.         System.err.println("解密后:\t" + outputStr);  
    31.   
    32.         assertEquals(inputStr, outputStr);  
    33.     }  
    34. }  

    得到的输出内容如下: 
    Console代码  收藏代码
    1. 原文: DES  
    2. 密钥: f3wEtRrV6q0=  
    3.   
    4. 加密后:    C6qe9oNIzRY=  
    5.   
    6. 解密后:    DES  

        由控制台得到的输出,我们能够比对加密、解密后结果一致。这是一种简单的加密解密方式,只有一个密钥。 

        其实DES有很多同胞兄弟,如DESede(TripleDES)、AES、Blowfish、RC2、RC4(ARCFOUR)。这里就不过多阐述了,大同小异,只要换掉ALGORITHM换成对应的值,同时做一个代码替换SecretKey secretKey = new SecretKeySpec(key, ALGORITHM);就可以了,此外就是密钥长度不同了。 

    例:

    import javax.crypto.Cipher;  
    import javax.crypto.spec.SecretKeySpec; 
    /**
     * DES算法类
     * @author Povol
     */
    public class DES {  
        public static String encrypt(String encryptString, String encryptKey) throws Exception {  
            SecretKeySpec key = new SecretKeySpec(encryptKey.getBytes(), "DES");  
            Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");  
            cipher.init(Cipher.ENCRYPT_MODE, key);  
            byte[] encryptedData = cipher.doFinal(encryptString.getBytes());  
           
            return Base64.encode(encryptedData);  
        }  
        public static String decrypt(String decryptString, String decryptKey) throws Exception {  
            byte[] byteMi = Base64.decode(decryptString);  
            SecretKeySpec key = new SecretKeySpec(decryptKey.getBytes(), "DES");  
            Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");  
            cipher.init(Cipher.DECRYPT_MODE, key);  
            byte decryptedData[] = cipher.doFinal(byteMi);  
           
            return new String(decryptedData);  
        }  
    }  

     密钥,长度必须是8位 。  !!!   还可以是其他的位数吗  ? 有实践过的给指导下谢谢 。。。

    最近调整项目统一 php ios android 加密 修改 DES加密为 CBC分割模式 具体上代码 。

    public class DES {
    
    private static byte[] iv1 = { (byte) 0x12, (byte) 0x34, (byte) 0x56,
    (byte) 0x78, (byte) 0x90, (byte) 0xAB, (byte) 0xCD, (byte) 0xEF };
    
    public static String decrypt(String decryptString, String decryptKey)
    throws Exception {
    IvParameterSpec iv = new IvParameterSpec(iv1);
    SecretKeySpec key = new SecretKeySpec(decryptKey.getBytes(), "DES");
    Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
    cipher.init(Cipher.DECRYPT_MODE, key, iv);
    
    return new String(cipher.doFinal(Base64.decode(decryptString)));
    }
    
    public static String encrypt1(String encryptString, String encryptKey)
    throws Exception {
    IvParameterSpec iv = new IvParameterSpec(iv1);
    DESKeySpec dks = new DESKeySpec(encryptKey.getBytes());
    SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
    SecretKey key = keyFactory.generateSecret(dks);
    Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
    cipher.init(Cipher.ENCRYPT_MODE, key, iv);
    
    return Base64.encode(cipher.doFinal(encryptString.getBytes()));
    }
    }


    网上解决方法

    java.security.InvalidAlgorithmParameterException: ECB mode cannot use IV

    ECB是什么呢?我的代码完全没有写ECB什么的

    又上网搜索,结果把DES的来龙去脉都搞清楚了

    http://www.tropsoft.com/strongenc/des.htm

    ECB是其中一种字串分割方式,除了DES以外,其他加密方式也会使用这种分割方式的,而Java默认产生的DES算法就是用ECB方法,ECB不需要向量,当然也就不支持向量了

    除了ECB,DES还支持CBC、CFB、OFB,而3DES只支持ECB和CBC两种

    http://www.tropsoft.com/strongenc/des3.htm

    CBC支持并且必须有向量,具体算法这里就不说了。合作商给的.net代码没有声明CBC模式,似乎是.net默认的方式就是CBC的

    于是把模式改成CBC

    Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");

    成功运行了

    后话:

    搜索的过程中,找到一个不错的讨论

    http://www.lslnet.com/linux/dosc1/21/linux-197579.htm
    在CBC(不光是DES算法)模式下,iv通过随机数(或伪随机)机制产生是一种比较常见的方法。iv的作用主要是用于产生密文的第一个block,以使最终生成的密文产生差异(明文相同的情况下),使密码攻击变得更为困难,除此之外iv并无其它用途。因此iv通过随机方式产生是一种十分简便、有效的途径。此外,在IPsec中采用了DES-CBC作为缺省的加密方式,其使用的iv是通讯包的时间戳。从原理上来说,这与随机数机制并无二致。

    看来,向量的作用其实就是salt

    最大的好处是,可以令到即使相同的明文,相同的密钥,能产生不同的密文

    例如,我们用DES方式在数据保存用户密码的时候,可以另外增加一列,把向量同时保存下来,并且每次用不同的向量。这样的好处是,即使两个用户的密码是一样的,数据库保存的密文,也会不一样,就能降低猜测的可能性。






    展开全文
  • 今天使用openssl 库中的rsa算法遇到一个诡异的问题,首先我通过rsa算法生成密钥对,然后使用私钥对一段数据进行加密运算。但是很奇怪我每次执行这个加密算法每次的结果不一样。然后上网查了下相关问题,有人说rsa...

    今天使用openssl 库中的rsa算法遇到一个诡异的问题,首先我通过rsa算法生成密钥对,然后使用私钥对一段数据进行加密运算。但是很奇怪我每次执行这个加密算法每次的结果不一样。然后上网查了下相关问题,有人说rsa算法就是应该每次结果不一致的。但我很不同意这样的结果。举例 :密钥 A,数据S,加密结果 D。  rsa(A,S)->D, 这个公式,输入参数都没有变结果就应该不会变。程序的输出是确定的。后面经过仔细检查发现是RSA_private_encrypt函数第一个参数传入的不对。

    RSA_private_encrypt(int flen, const unsigned char *from, unsigned char *to, RSA *rsa, int padding);

        flen: 要加密信息长度

        from: 要加密信息
        to: 加密后的信息
        padding: 采取的加密方案, 分为: RSA_PKCS1_PADDING, RSA_PKCS1_OAEP_PADDING, RSA_SSLV23_PADDING, RSA_NO_PADDING
    flen:是要加密数据的长度,不是密钥长度,网上有很多例子写成了密钥的长度。注,有时候这个值给的不是加密数据长度可能导致加密失败

    具体实例:可以参考http://download.csdn.net/download/yuzuyi2006/9989467

    展开全文
  • 数据库加密实现数据安全

    千次阅读 2007-12-01 00:14:00
     数据加密、数据库加密的技术现状和未来的走向如何?这一领域的产品化解决方案是否可以满足行业和企业用户的需求?本期《CSO沙龙》以“数据加密、数据库加密实现数据安全”为讨论话题,介绍权威厂商在这一领域的...
    一位著名的信息安全专家曾经说过,信息安全无外乎三个方面。一是数据安全,二是系统安全,也就是时下较为热门的防火墙、入侵检测及VPN等边界安全,三是电子商务的安全。

      数据加密、数据库加密的技术现状和未来的走向如何?这一领域的产品化解决方案是否可以满足行业和企业用户的需求?本期《CSO沙龙》以“数据加密、数据库加密实现数据安全”为讨论话题,介绍权威厂商在这一领域的理念、技术、产品与方案。对本期话题感兴趣或者希望进一步了解相关厂商资料的行业和企业用户,请与本栏目jiez@ccu.com.cn联系。

      ◆ 画龙点睛

      华工安鼎的观点认为,信息安全的核心地带是数据库的安全,将数据库加密就抓住了信息安全的核心问题。

      防火墙不是问题的全部

      以防火墙为代表的反入侵网络安全技术不等于信息安全的全部。在绝大多数信息系统中,核心数据和资料是以数据库的方式存储,没有加密的数据库就如同没有上锁的文件柜,对别有用心的人而言,剽窃、篡改易如反掌。因此,数据库的安全问题不容忽视。

      数据库加密系统是为增强普通关系数据库管理系统的安全性而设计开发的。旨在提供一个安全适用的数据库加密平台,对通信和数据库存储的内容实施有效保护。它通过通信加密、数据库存储加密等安全方法实现了数据库数据存储和通信的保密和完整性要求,使得数据库以密文方式存储并在密态方式下工作,确保了数据安全。

      加密数据库迫在眉睫

      经过近几年的研究,我国数据库加密技术已经比较成熟。一些公司的数据库安全中间件技术,在保护用户原有的软硬件投资的前提下,可以有效实现数据库密态存储和查询。这一技术已经在实践中得到有效应用。

      那么,为什么说数据库安全的问题是当前行业和企业用户迫在眉睫的安全问题呢?

      首先,反拷贝的信息安全技术是真正可靠的技术,而数据库加密技术就是此类技术之一。敌对机构之间的情报战采用的手段之一往往是最直接的收买、拷贝方式。如果敌对方买通一名通常情况下不被人们注意的清洁工,即便这位清洁工不懂任何技术,但他只需要用被情报、特工人员经常使用的硬盘拷贝机,轻轻按一个按钮就可以在几分钟之内拷走全部数据!

      而此时,防火墙、入侵检测等防护系统是起不到安全保卫作用的。而数据库加密后以密文方式存储,即使被窃取、被拷贝,机密数据也不会被敌对方获取,因为这时他们获取的,只不过是一堆几乎无法破解的密码。

      其次,互联网的普及,移动通信、笔记本电脑的广泛使用对数据库安全构成了更大的威胁。无线通讯中随时有可能被截取、被仿冒、被侦听。无线上网、移动通讯在给人们带来方便和高效率的同时也带来了信息安全的重大隐患。

      再次,数据库安全应该与操作系统、网络安全、CPU并重,共同组成信息安全战略的重心。只有制定标准,将数据库安全作为信息安全管理的一项重要内容进行实施和有效监控,才能使信息安全得到更进一步保障。

      7大特征实现数据库加密

      一般而言,一个行之有效的数据库加密系统主要有以下7个方面的功能和特性。

      1、身份认证:用户除提供用户名、口令外,还必须按照系统安全要求提供其它相关安全凭证。系统可以选择使用终端密钥、用户USB Key等来增强身份认证的安全性。

      2、通信加密与完整性保护:有关数据库的访问在网络传输中都被加密,通信的目的地还可以校验通信的完整性;通信一次一密的意义在于防重放、防篡改。

      3、数据库数据存储加密与完整性保护:系统采用数据项级存储加密,即数据库中不同的记录、每条记录的不同字段都采用不同的密钥加密,辅以校验措施来保证数据库数据存储的保密性和完整性,防止数据的非授权访问和修改。

      4、数据库加密设置:系统中可以选择需要加密的数据库列,以便于用户选择那些敏感信息进行加密而不是全部数据都加密。只对用户的敏感数据加密,可以提高数据库访问速度。这样有利于用户在效率与安全性之间进行自主平衡。

      5、多级密钥管理模式:主密钥和主密钥变量保存在安全区域,二级密钥受主密钥变量加密保护,数据加密的密钥存储或传输时利用二级密钥加密保护,使用时受主密钥保护。

      6、安全备份:系统提供数据库明文备份功能(为防止灾难发生,系统提供明文形式的数据库内容备份功能,以防止丢失密钥或数据造成灾难性后果)和密钥备份功能(用户可以同时使用数据库管理系统的备份功能和数据库加密系统的密钥备份功能来同时备份密文和密钥,在需要时进行恢复)。

      7、通用接口和广泛的平台支持:系统采用开放的体系结构,支持标准SQL语句。

      相关知识库

      ◆ 数据加密的几种算法

      加密算法是一些公式和法则,它规定了明文和密文之间的变换方法。密钥是控制加密算法和解密算法的关键信息,它的产生、传输、存储等工作是十分重要的。

      数据加密的基本过程包括对明文(即可读信息)进行翻译,译成密文或密码的代码形式。该过程的逆过程为解密,即将该编码信息转化为其原来的形式的过程。

      DES算法 DES(Data Encryption Standard)是由IBM公司在1970年以后发展起来的,于1976年11月被美国政府采用,DES随后被美国国家标准局和美国国家标准协会(American National Standard Institute,ANSI)承认。

      三重DES DES的密码学缺点是密钥长度相对比较短,因此,人们又想出了一个解决其长度的方法,即采用三重DES。

      RSA算法 它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman。

      AES算法 它是21世纪最新的取代DES算法的商用加密标准,在理论上,此加密方法需要国家军事量级的破解设备运算10年以上时间才可能破译。

     
    展开全文
  • 数据传输加密技术分析

    万次阅读 2015-12-23 21:03:46
    如何保证在不安全的网络上安全地传输数据是一个难题,而基于PGP(Pretty Good Privacy)机制的加密及签名机制就可以极大地保证网络用户传输及使用数据的安全性。 PGP是一个基于RSA公钥加密体系的邮件加密软件。它...
  • 加密

    2009-11-15 17:04:00
    由于要坐https相关的内容。...今天就上网搜寻了https的相关知识。... 1。...web客户端和服务端之间的数据通信是经过加密的。对于我们web程序员来说它们之间的数据加密是透明的(服务器和浏览器会自动对数据加密
  • 一开始提出数据加密时,我的内心。。。 硬着头皮开始上网找方案 第一种方式 直接加密数据,比如MD5、Des、Rsa、Base64等众多加密方式,使用加密直接处理现有数据,查询时进行解密查询。。。。吐~~~ 内心是崩溃的...
  • 本文主要讲解了破解移动端HTTPS数据的思路
  • 原文链接 写在前面:任何应用的开发中安全都是重中之重,在信息交互异常...这篇文章就介绍在iOS开发中最常用的数据加密方式。 文中证书锁定内容部分参考了博客http://blog.csdn.net/dd864140130/article/details/5...
  • 大家都知道,在公共场所,连接非加密Wifi是不安全的,因为任何人都有机会看到自己上网数据。这篇文章就是演示这种场景。 初看文章标题,是不是它有点长?这是因为802.11无线协议的特殊性,所以我不得不给标题加...
  • 这篇文章介绍Android平台上常用的加密方式之MD5加密。MD5 MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程...
  • 1.数据防泄密软件包括对透明文件加密: 安装了加密软件后、用户感觉不到加密软件的存在、可防止员工拿走图纸、文件、拿走也无法打开。 2.数据防泄密软件可以对文件加密外发管理 可以控制图纸的使用时间期限、次数、...
  • 8月20日,中国互联网络信息中心(CNNIC)发布报告显示,我国网民突破8亿,其中超过98%的人每天用手机上网。实际上在我们享受互联网带来便利的同时,每个人的隐私也在不断...
  • 在一个平台上进行非对称加密是So easy的事情,上网一找一大把。可是要想在多个平台上使用非对称加密来进行数据通讯,网上就不太好找现成可用的例子了。 下面逐步来说明一下,如何做这件事情吧。 首先到网上找一个...
  •  数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人...
  • 安全隔离上网加密与非加密划分两个区域,互不干涉;沙盒在对服务器保护的同时,也不会对服务器文件做加密处理,方便系统管理员存储、备份、运维;沙盒也可以与ERP、OA、PDM等服务器,与SVN、VSS等版本管理工具无缝...
  • 一、关键词 HTTP,HTTPS,AES,SHA-1,MD5,消息摘要,数字签名,数字加密,Java,Servlet,Bouncy Castle ...数字摘要就是采用单项Hash函数将需要加密的明文“摘要”成一串固定长度(128位)的密文这一串密文又称为
  • 原理是:浏览器首先通过加密通道 链接到一台外网的服务器上;而后通过这台服务器再访问整个互联网。一言以蔽之曰:绕墙访问。 条件:这一台外网服务器必须有ssh登录权限。   具体步骤:   1、点击这里 下载...
  • 在一个加密应用中,要处理的信息来自下面的字符集,各个字符的相关使用频度如下: 字符空格 A B C D E F G H I J K L M 频度 180 64 13 23 32 103 22 15 47 57 1 5 31 20 字符 N O P...
  • 前一阶段看了一些关于数据安全,系统安全,以及社会工程学的书籍,突然觉得数据加密是一项十分重要的工作,由其是公司的敏感数据、商业机密,或者个人的重要文件都应该随时进行加密;就算是平时的备份数据也要进行...
  • SM4加密算法实现Java和C#相互加密解密 近期由于项目需要使用SM4对数据进行加密,然后传给Java后台,Java后台使用的也是SM4的加密算法但是就是解密不正确,经过一步步调试发现Java中好多数据类型与C#的相同的数据...
  • 信息加密

    2018-08-07 00:16:21
    1、在计算机网络中,所有数据都是暴露的。也就是说你从计算机A发送到计算机B的数据,别人利用计算机C也能轻易获取到你所发出一模一样的数据。 打个比方:在学生时代,很...小明想了一个办法:加密。小明制定了一个...
  • 网络加密与认证技术

    千次阅读 2015-11-02 16:27:46
     数据加密过程就是通过加密系统把原始的数字数据(明文),按照加密算法变换成与明文完全不同的数字数据(密文)的过程。  数据加密算法有很多种,密码算法标准化是信息化社会发展的必然趋势,是世界各国保密通信领域...
  • 一、关键词 HTTP,HTTPS,AES,SHA-1,MD5,消息摘要,数字签名,数字加密,Java,Servlet,Bouncy Castle ...数字摘要就是采用单项Hash函数将需要加密的明文“摘要”成一串固定长度(128位)的密文这一串密文又称为
  • 对称加密算法用来对敏感数据等信息进行加密。 非对称算法:非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为"公钥"和"私钥",它们两个必需配对使用,否则不能打开加密文件。发...
  • EFS加密破解

    千次阅读 2015-10-08 00:25:05
    原文地址:EFS加密破解作者:小野  今天解决了一个非常棘手的数据恢复问题,相当得有成就感。网上看到有专业的数据恢复公司对这种情况的数据恢复报价是...上网搜索解决办法,基本都说无法补救。尝试了很多办法,后来终
  • RSA+Base64加密

    千次阅读 2017-05-16 23:16:06
    这段时间要做一个业务需求,说是为了安全起见把数据请求用RSA加密。然后咨询了下后台是怎么个加密方法,然后后台就给了个公钥和私钥,说,公钥加密,私钥加签,之后再Base64加密上网搜索,整理了下,就得出如下...
  • 无线加密的几种加密方式

    千次阅读 2017-05-15 20:04:27
    无线加密的几种加密方式     目前无线路由器里带有的加密模式主要有:WEP,WPA-PSK(TKIP),WPA2-PSK(AES)和WPA-PSK(TKIP)+WPA2-PSK(AES)。   WEP(有线等效加密) WEP是WiredEquivalentPrivacy的...
  • 虚拟加密磁盘实现

    2020-03-05 10:14:02
    我们知道,将数据保存到硬盘上面是很不安全的,例如如果有一个公司的核心文档保存在员工电脑上面,虽然这个员工可以对自己的电脑进行一定的防护,例如封掉USB,禁止上网等等,但是一旦有人讲硬盘拔走的话,还是比较...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,278
精华内容 12,111
关键字:

上网数据加密