常用的加密算法--对称加密

对称加密是最快速、最简单的一种加密方式,加密与解密用的是相同的密钥。对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。

对称加密通常使用的是相对较小的密钥,一般小于256 bit。因为密钥越大,加密越强,但加密与解密的过程越慢。

常见的对称加密算法:DES算法、3DES算法 、AES算法

特点:算法公开,计算量小,加密速度快,加密效率高。其安全性主要依赖于秘钥的安全性。加密的时候使用的密钥只有一个。


DES算法

对称加密算法,明文按照64位进行分组,密钥长64位,但是实际上只用56位参与DES运算,第8、16、24、32、40、48、56、64位是校验位,使得每个密钥都有一个奇数位。分组后的明文和56位的密钥按位替代或交换的方法形成密文。

   /**
     * DES 生成密钥
     * @return
     * @throws Exception
     */
    public static String genKeyDES() throws Exception {
        KeyGenerator keyGen = KeyGenerator.getInstance("DES");
        keyGen.init(56); //产生秘钥为56位
        SecretKey key = keyGen.generateKey();
        String base64Str = byte2base64(key.getEncoded());
        return base64Str;
    }
    /**
     *  DES 将字符串秘钥转换成SecretKey对象
     * @param base64Key
     * @return
     * @throws Exception
     */
    public static SecretKey loadKeyDES(String base64Key) throws Exception {
        byte[] bytes = base642byte(base64Key);
        SecretKey key = new SecretKeySpec(bytes, "DES");
        return key;
    }
    /**
     *DES 使用生成秘钥对其进行对称加密
     * @param source 加密的字节数组
     * @param key  秘钥
     * @return
     * @throws Exception
     */
    public static byte[] encryptDES(byte[] source,SecretKey key) throws Exception {
        Cipher cipher = Cipher.getInstance("DES");
        cipher.init(Cipher.ENCRYPT_MODE, key);
        byte[] bytes = cipher.doFinal(source);
        return bytes;
    }
    /**
     * DES使用生成秘钥对其进行解密
     * @param source
     * @param key
     * @return
     * @throws Exception
     */
    public static byte[] decryptDES(byte[] source,SecretKey key) throws Exception{
        Cipher cipher = Cipher.getInstance("DES");
        cipher.init(Cipher.DECRYPT_MODE, key);
        byte[] bytes = cipher.doFinal(source);
        return bytes;
    }
    /**
     * base64 編碼
     * @param base64
     * @return
     * @throws IOException
     */
    private static byte[] base642byte(String base64) throws IOException {
         BASE64Decoder bs = new BASE64Decoder();
         return bs.decodeBuffer(base64); 
    }

    /**
     * base64 解码
     * @param bytes
     * @return
     */
    private static String byte2base64(byte[] bytes) {
        BASE64Encoder bse = new BASE64Encoder();
        return bse.encode(bytes);
    }

AES算法

全世界所使用,对称加密算法中最流行的算法之一。设计有三个密钥长度(128,192,256位),比DES加密算法更加的安全。

/**
     * AES 获取公钥
     * @return
     * @throws Exception
     */
    public static String genKeyAES() throws Exception {
        KeyGenerator keyGenerator= KeyGenerator.getInstance("AES");
        keyGenerator.init(128);
        SecretKey key = keyGenerator.generateKey();
        String base64Str = byte2base64(key.getEncoded());
        return base64Str;
    }
    /**
     * AES 生成SecretKey对象的秘钥
     * @param base64Key
     * @return
     * @throws Exception
     */
    public static SecretKey loadKeyAES(String base64Key) throws Exception {
        byte[] bytes = base642byte(base64Key);
        SecretKey key = new SecretKeySpec(bytes, "AES");
        return key;
    }
    /**
     * AES  数据加密
     * @param source
     * @param key
     * @return
     * @throws Exception
     */
    public static byte[] encryptAES(byte[] source,SecretKey key) throws Exception{
        Cipher cipher = Cipher.getInstance("AES");
        cipher.init(Cipher.ENCRYPT_MODE, key);
        byte[] bytes = cipher.doFinal(source);
        return bytes;
    }
    /**
     * AES 数据解密
     * @param source
     * @param key
     * @return
     * @throws Exception
     */
    public static byte[] decryptAES(byte[] source,SecretKey key) throws Exception{
        Cipher cipher = Cipher.getInstance("AES");
        cipher.init(Cipher.DECRYPT_MODE, key);
        byte[] bytes = cipher.doFinal(source);
        return bytes;
    }
时间: 2024-12-28 08:56:55

常用的加密算法--对称加密的相关文章

常用的加密算法--非对称加密

非对称加密拥有两个密钥:公开密钥(publickey)和私有密钥(privatekey).通常使用公钥加密,只有使用对应的私钥才能够解密. 非对称加密主要算法有:RSA.Elgamal.背包算法.Rabin.D-H.ECC(椭圆曲线加密算法)等 非对称加密执行的步骤顺序: 1.先获取KeyPair对象: 2.获取字符串的公钥/私钥: 3.将字符串的公钥/私钥转换成为公钥/私钥类对象: 4.使用类对象的公钥进行数据加密: 5.使用类对象的私钥进行解密. RSA算法 目前最常用的非对称加密算法就是R

【安全加密技术】--对称加密

转载请注明出处:http://blog.csdn.net/sk719887916/article/details/46822663 上篇了解了<非对称加密>后 今天我来继续了解下加密技术中对称加密. 对称加密 对称加密是最传统的加密方式,比上非对称加密,缺少安全性,但是它依旧是用的比较多的加密方法. 对称加密采用单密钥加密方式,不论是加密还是解密都是用同一个密钥,即"一把钥匙开一把锁".对称加密的好处在于操作简单.管理方便.速度快.它的缺点在于密钥在 网络传输中容易被窃听,

最全加密算法之对称加密和非对称加密

常见加密算法 : DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合: 3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高: RC2和 RC4:用变长密钥对大量数据进行加密,比 DES 快: IDEA(International Data Encryption Algorithm)国际数据加密算法:使用 128 位密钥提供非常强的安全性: RSA:由 RSA 公司发明,是一个支持变长密钥的公共

Asp.Net 常用工具类之加密——对称加密DES算法(2)

又到周末,下午博客园看了两篇文章,关于老跳和老赵的程序员生涯,不禁感叹漫漫程序路,何去何从兮! 转眼毕业的第三个年头,去过苏州,跑过上海,从一开始的凌云壮志,去年背起行囊默默回到了长沙准备买房,也想有个家(毕竟年级不小了),有盼头的工作前景. 看到老赵和老跳两位前辈的故事,真实且现实,同时也有一丢丢的小迷茫,敢问路在何方! 感叹一会儿,生命不止,Code不止,继续入坑! 昨天分享了一下非对称加密RSA算法,今天给朋友们分享一下对称加密DES算法案例. 加解密过程: 1.生成加密密钥key,密码越

对称加密 非对称加密 不可逆加密算法

根据密钥类型不同可以将现代密码技术分为两类:对称加密算法(私钥密码体系)和非对称加密算法(公钥密码体系). 1 对称加密算法中,数据加密和解密采用的都是同一个密钥,因而其安全性依赖于所持有密钥的安全性.对称加密算法的主要优点是加密和解密速度快,加密强度高,且算法公开.缺点是实现密钥的秘密分发困难,在大量用户的情况下密钥管理复杂,而且无法完成身份认证等功能,不便于应用在网络开放的环境中.对称加密算法的特点是算法公开.计算量小.加密速度快.加密效率高.目前最著名的对称加密算法有数据加密标准DES,但

加密算法:对称加密和非对称加密

对称加密算法 所谓对称,就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密.密钥是控制加密及解密过程的指令.算法是一组规则,规定如何进行加密和解密. 对称加密算法的优点是算法公开.计算量小.加密速度快.加密效率高. 对称加密算法的缺点是在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥.其次如果一方的秘钥被泄露,那么加密信息也就不安全了.另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘钥,这会使得收.发双方所拥有的钥匙数量巨大,密钥管理成为双方的负

go加密算法:CBC对称加密(一)--3DES/AES

其实对称加密中的:DES\3DES\AES 采取的加解密步骤一致,只是小的细节不太一样.大家多看看就能写出来了 // rsao1.go package main import ( "bytes" "crypto/aes" "crypto/cipher" "crypto/des" "fmt" ) /* 明文加密的分组操作 .分组的长度 = 密钥的长度 //key = 64bit/8 .将每组数据和密钥进行位运

https 结合使用 对称加密和非对称加密

(一)对称加密(Symmetric Cryptography) ---共享密钥加密 对称加密是最快速.最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key),这种方法在密码学中叫做对称加密算法.对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中.对称加密通常使用的是相对较小的密钥,一般小于256 bit.因为密钥越大,加密越强,但加密与解密的过程越慢.如果你只用1 bit来做这个密钥,那黑客们可以先试着用

对称加密与非对称加密

(一)对称加密(Symmetric Cryptography) 对称加密是最快速.最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key).对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中. 对称加密通常使用的是相对较小的密钥,一般小于256 bit.因为密钥越大,加密越强,但加密与解密的过程越慢.如果你只用1 bit来做这个密钥,那黑客们可以先试着用0来解密,不行的话就再用1解:但如果你的密钥有1 MB