zoukankan      html  css  js  c++  java
  • java 3DES加密示例

    3DES是三重数据加密,且可以逆推的一种算法方案。但由于3DES的算法是公开的,所以算法本身没有密钥可言,主要依靠唯一密钥来确保数据加解密的安全,其具体实现如下:设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,M代表明文,C代表密文:
      3DES加密过程为:C=Ek3(Dk2(Ek1(M)))
      3DES解密过程为:M=Dk1(EK2(Dk3(C)))
     

    SecretKeyFactory.getInstance("DESede")

    DESede 相比 DES ,多出的ede,正好是encrypt - decrypt -encrypt,使用3条56位的密钥对数据进行三次加密

    java示例:

     1   /**
     2      *
     3      * @param key 秘钥
     4      * @param text 需要加密的数据
     5      * @return
     6      * @throws Exception
     7      * 简单了解下 : DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。DES加密算法出自IBM的研究,
     8      * 后来被美国政府正式采用,之后开始广泛流传,但是近些年使用越来越少,因为DES使用56位密钥,以现代计算能力,较为容易破解。
     9      */
    10     public static String encrypt(String key,String text) throws  Exception {
    11         try {
    12             byte[] src = text.getBytes("utf-8");
    13             //DESedeKeySpec会帮你生成24位秘钥,key可以是任意长度
    14             DESedeKeySpec spec = new DESedeKeySpec(key.getBytes("utf-8"));
    15             SecretKeyFactory factory = SecretKeyFactory.getInstance("DESede");
    16             SecretKey secretKey = factory.generateSecret(spec);
    17             Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");
    18             cipher.init(Cipher.ENCRYPT_MODE, secretKey);
    19             byte[] res = cipher.doFinal(src);
    20             //encodeBase64会对字符串3位一组自动补全,因而最后可能会出现 == 或者 =
    21             return new String(Base64.encodeBase64(res), "utf-8");
    22 
    23         } catch (Exception e) {
    24             System.out.println("error");
    25         }
    26         return null;
    27     }
    new DESedeKeySpec(key.getBytes("utf-8"))
     public DESedeKeySpec(byte[] var1, int var2) throws InvalidKeyException {
            if(var1.length - var2 < 24) {
                throw new InvalidKeyException("Wrong key size");
            } else {
                this.key = new byte[24];
                System.arraycopy(var1, var2, this.key, 0, 24);
            }
        }

    目前主流加密手段大致可分为单向加密和双向加密:

      单向加密:通过对数据进行摘要计算生成密文,密文不可逆推还原。算法代表:MD5,SHA

      双向加密:与单向加密相反,可以把密文逆推还原成明文,双向加密又分为 对称加密和非对称加密

      对称加密:指数据使用者必须拥有相同的密钥才可以进行加密解密,就像彼此约定的一串暗号。算法代表:DES,3DES,AES,IDEA,RC4,RC5

      非对称加密:相对对称加密而言,非对称加密需要公开密钥和私有密钥两组密钥,公开密钥和私有密钥是配对起来的,也就是说使用公开密钥进行数据加密,只有对应的私有密钥才能解密,只能使用该用户的加密密钥才能解密。如果知道了其中一个,并不能计算出另外一个。这里把公开的密钥为公钥,不公开的密钥为私钥。算法代表:RSA,DSA

      MD5SHAHMAC这三种加密算法,可谓是非可逆加密,就是不可解密的加密方法,我们称之为单向加密算法。我们通常只把他们作为加密的基础。

    参考链接:http://security.group.iteye.com/group/wiki/1710-one-way-encryption-algorithm

     
  • 相关阅读:
    20200924-4 代码规范,结对要求
    20200924-2 功能测试
    20200917-1 每周例行报告
    20200917-3 白名单
    20200917-2 词频统计 已更新附加题!
    20200910-1 每周例行报告
    20200924-2功能测试
    20200924-1每周例行报告
    20200924-3单元测试
    20200924-5 四则运算,结对
  • 原文地址:https://www.cnblogs.com/number7/p/9489429.html
Copyright © 2011-2022 走看看