zoukankan      html  css  js  c++  java
  • DES-对称加密

    对于大多数对称加密算法而言,解密算法是加密算法的逆运算,加密密钥和解密密钥相同。

    在对称加密算法中,DES最具有代表性,堪称典范;DESede是DES算法的变种;AES算法则作为DES算法的替代者;而IDEA算法作为一种强加密算法,成为电子邮件加密软件PGP(pretty good privacy)的核心算法之一。

    在Java实现层面上,DES、DESede、AES和IDEA这4种算法略有不同。

    DES和DESede算法在使用密钥材料还原密钥时,建议使用各自相应的密钥材料实现类(DES算法对应DESKeySpec类,DESede算法对应DESedeKeySpec类)完成相应的转换操作。

    AES算法在使用密钥材料还原密钥时,则需要使用一般密钥材料实现类(SecretKeySpec类)完成相应的转换操作。其他对称加密算法可参照该方式实现,如RC2、RC4、Blowfish以及IDEA等算法均可参照AES算法实现方式做相应实现。

    package com.ant.jdk8.encrypt;
    
    import org.apache.commons.io.FileUtils;
    
    import javax.crypto.Cipher;
    import javax.crypto.KeyGenerator;
    import javax.crypto.SecretKey;
    import java.io.File;
    import java.nio.charset.Charset;
    import java.util.Base64;
    
    /**
     * @date 2019/1/20
     */
    public class DSADemo {
        public static void main(String[] args) throws Exception {
            String data = "城头变幻大王旗";
            KeyGenerator keyGenerator = KeyGenerator.getInstance("DES");
            keyGenerator.init(56);
            SecretKey secretKey = keyGenerator.generateKey();
            String secretKeyBase64String = Base64.getEncoder().encodeToString(secretKey.getEncoded());
            FileUtils.writeStringToFile(new File("D:\des_secret_key.pem"), secretKeyBase64String, Charset.forName("utf-8"));
            Cipher cipher = Cipher.getInstance("DES");
            cipher.init(Cipher.ENCRYPT_MODE, secretKey);
            byte[] bytesEncrypt = cipher.doFinal(data.getBytes(Charset.forName("utf-8")));
            System.out.println("加密后:"+Base64.getEncoder().encodeToString(bytesEncrypt));
            cipher.init(Cipher.DECRYPT_MODE, secretKey);
            byte[] bytesDecrypt = cipher.doFinal(bytesEncrypt);
            System.out.println("解密后:"+new String(bytesDecrypt, Charset.forName("utf-8")));
        }
    }
    

     

  • 相关阅读:
    最长公共子序列和最长公共连续子序列 andrew的日志 网易博客
    Best Computer Science Interview Books JiansNet
    分享:Mitmproxy 0.9 发布,支持 SSL 的 HTTP 代理
    创业环境差,被迫“走西口”:一位台湾码农的心路历程
    STLSupport GDB Wiki
    utils C/C++的常用工具类
    题目36 ACM在线评测系统
    DRAMA QUEEN_洪晃在ilook的BLOG
    Codeblocks调试STL——gdb with python support Wanglikai91 博客园
    python urlencode 编码
  • 原文地址:https://www.cnblogs.com/i-hard-working/p/10296606.html
Copyright © 2011-2022 走看看